我正在尝试使用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)));
虽然这次没有抛出错误,但它没有返回任何结果。
答案 0 :(得分:3)
得出以下结论:
如果您期望获得相同的结果,则需要使用相同类型的Search和DeleteByQuery。
此外,删除实际发生了!但是我期待着回应。如果它删除了任何东西,那么它就是真的,但这并没有发生。
应该在NEST 2.0中修复(他们在此问题后推出修复程序)
所以现在,您可以使用response.IsValid来验证它是否正常(但可能不是它删除了任何东西)