我在prepareDelete
中使用BulkRequest
查询,其中我有一组我必须删除的ID。
我用过:
BulkRequestBuilder bulkRequest = searchClient.prepareBulk();
for id in ids {
bulkRequest.add(searchClient.prepareDelete("indexName", "childType", id));
}
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
此删除结构在ES 2.2.0中有效,但在ES 2.3.0中我得到RoutingMissingException
。
如果我打印bilkResponse.buildFailureMessage()
而我
[0]: index [indexName], type [childType], id [215f3228a3c53970883ae0d3b22dae6f], message [[indexName] RoutingMissingException[routing is required for [indexName]/[childType]/[215f3228a3c53970883ae0d3b22dae6f]]]
我甚至没有更改现有索引的设置/映射。
可能是什么原因?
答案 0 :(得分:0)
似乎类似于回答here
的问题引用答案完成
如果您有父子关系,则需要指定 每次尝试访问子项时,URL中的父项都是 路由现在取决于父母。
在您的示例中,您想尝试:
curl -XDELETE http://localhost:9200/indexName/childType/215f3228a3c53970883ae0d3b22dae6f?parent=[parent_id]
这对你也有帮助。 Delete child doc
答案 1 :(得分:0)
@rahulroc是对的。我正在添加一个按时间顺序列出的引用该问题的引用列表:
也许更新3是使es-2.3.0
中出现异常的那个。
因此,您可以使用has_child
query从子文档ID中获取父级。