没有对象名称的嵌套 DeleteByQuery
Nest DeleteByQuery without the Object name
我想在不指定我没有的对象的情况下向 elasticsearch 发送 Nest 删除请求。我见过这样的解决方案:
var response = elasticClient.DeleteByQuery<MyClass>(q => q
.Match(m => m.OnField(f => f.Guid).Equals(someObject.Guid))
);
发件人:DeleteByQuery using NEST and ElasticSearch
因为我只是从队列中读取纯文本,所以我无权访问用于删除请求的 MyClass 对象。基本上我只想删除索引(我知道其名称)中变量匹配的所有文档,例如 ordId = 1234。类似:
var response = client.DeleteByQuery<string>( q => q
.Index(indexName)
.AllTypes()
.Routing(route)
.Query(rq => rq
.Term("orgId", "1234"))
);
我看到嵌套的 IElasticClient 接口确实有一个不需要映射对象的 DeleteByQuery 方法,但不确定如何实现它。
您只需将 object
指定为 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")
)
);
将生成以下查询
POST http://localhost:9200/index-name/type-name/_delete_by_query
{
"query": {
"term": {
"orgId": {
"value": "1234"
}
}
}
}
首先将 URI 中的 _delete_by_query
替换为 _search
,以确保您定位的是预期的文档:)
我想在不指定我没有的对象的情况下向 elasticsearch 发送 Nest 删除请求。我见过这样的解决方案:
var response = elasticClient.DeleteByQuery<MyClass>(q => q
.Match(m => m.OnField(f => f.Guid).Equals(someObject.Guid))
);
发件人:DeleteByQuery using NEST and ElasticSearch
因为我只是从队列中读取纯文本,所以我无权访问用于删除请求的 MyClass 对象。基本上我只想删除索引(我知道其名称)中变量匹配的所有文档,例如 ordId = 1234。类似:
var response = client.DeleteByQuery<string>( q => q
.Index(indexName)
.AllTypes()
.Routing(route)
.Query(rq => rq
.Term("orgId", "1234"))
);
我看到嵌套的 IElasticClient 接口确实有一个不需要映射对象的 DeleteByQuery 方法,但不确定如何实现它。
您只需将 object
指定为 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")
)
);
将生成以下查询
POST http://localhost:9200/index-name/type-name/_delete_by_query
{
"query": {
"term": {
"orgId": {
"value": "1234"
}
}
}
}
首先将 URI 中的 _delete_by_query
替换为 _search
,以确保您定位的是预期的文档:)