Elasticsearch .net NEST - DeleteByQuery无效但搜索相同的查询有效

时间:2014-12-15 08:23:20

标签: .net elasticsearch nest

我正在尝试使用NEST从我的Elasticsearch集合中删除一些文档

以下代码适用并返回3个文档:

var results = client.Search<JObject>(s => s.Query(q => q.Terms("string.ProgramId", ids))

但是当我使用与DeleteByQuery相同的查询时:

var response = client.DeleteByQuery<string>(s => s.Query(q => q.Terms("string.ProgramId", ids)));

它引发了以下错误:

An unhandled exception of type 'Nest.DispatchException' occurred in Nest.dll

Additional information: Could not dispatch IElasticClient.DeleteByQuery() into any of the following paths: 

 - /{index}/_query

我做错了什么?

[编辑]

在另一个网站上得到了响应,我需要在使用破坏性端点(如删除)时指定索引。 而且我需要在搜索/删除时指定相同的类型,以便在查询时指向相同的路径或指定AllTypes()

尝试以下行:

var response = client.DeleteByQuery<JObject>(s => s.AllIndices().Query(q => q.Terms("string.ProgramId", ids)));

虽然这次没有抛出错误,但它没有返回任何结果。

1 个答案:

答案 0 :(得分:3)

得出以下结论:

如果您期望获得相同的结果,则需要使用相同类型的Search和DeleteByQuery。

此外,删除实际发生了!但是我期待着回应。如果它删除了任何东西,那么它就是真的,但这并没有发生。

应该在NEST 2.0中修复(他们在此问题后推出修复程序)

所以现在,您可以使用response.IsValid来验证它是否正常(但可能不是它删除了任何东西)