elasticsearch 嵌套DeleteByQuery而不使用对象名
我想向elasticsearch发送嵌套删除请求,但不指定我没有的对象。我见过这样的解决方案:
elasticsearch 嵌套DeleteByQuery而不使用对象名,
elasticsearch,nest,
elasticsearch,Nest,我想向elasticsearch发送嵌套删除请求,但不指定我没有的对象。我见过这样的解决方案: var response = elasticClient.DeleteByQuery<MyClass>(q => q .Match(m => m.OnField(f => f.Guid).Equals(someObject.Guid)) ); var response
var response = elasticClient.DeleteByQuery<MyClass>(q => q
.Match(m => m.OnField(f => f.Guid).Equals(someObject.Guid))
);
var response=elasticClient.DeleteByQuery(q=>q
.Match(m=>m.OnField(f=>f.Guid).Equals(someObject.Guid))
);
发件人:
因为我只是从队列中读取纯文本,所以我没有权限访问MyClass对象以用于删除请求。基本上,我只想删除索引(我知道其名称)中变量匹配的所有文档,例如ORDD=1234。比如:
var response = client.DeleteByQuery<string>( q => q
.Index(indexName)
.AllTypes()
.Routing(route)
.Query(rq => rq
.Term("orgId", "1234"))
);
var response=client.DeleteByQuery(q=>q
.Index(索引名)
.AllTypes()
.路线(路线)
.Query(rq=>rq
.术语(“orgId”、“1234”))
);
我看到nest IElasticClient接口确实有一个DeleteByQuery方法,该方法不需要映射对象,但不确定如何实现它。您只需将
对象指定为t
的文档类型t
,只需确保显式地向目标提供索引名和类型名即可在这种情况下T
仅用于在请求主体内提供强类型访问。比如说,
var client = new ElasticClient();
var deleteByQueryResponse = client.DeleteByQuery<object>(d => d
.Index("index-name")
.Type("type-name")
.Query(q => q
.Term("orgId", "1234")
)
);
首先在URI中将\u delete\u替换为\u search
,以确保您的目标是预期的文档:)太棒了,谢谢您的详细回复。您提到了显式提到索引名和类型名,如果我想针对与字段匹配的所有文档类型,我可以使用.AllTypes()而不是.type(“类型名”)。@CorribView yes您可以:)
POST http://localhost:9200/index-name/type-name/_delete_by_query
{
"query": {
"term": {
"orgId": {
"value": "1234"
}
}
}
}