删除父项不正确仍然成功

时间:2014-03-30 12:33:16

标签: elasticsearch children

在Elasticsearch中,我为文档类型定义了_parent映射(让我们称之为homes),并将一些文档编入索引。它们似乎被正确编入索引,因为当我搜索具有匹配某些条件的子项的父项时(使用has_child),将返回预期的结果。

“问题”是当我为像...这样的孩子发出删除时。

curl -XDELETE 'http://localhost:9200/test/homes/1?parent=11'
即使身份homes的{​​{1}}文档的父级不是1

也会成功。

这是预期的行为吗?

根据我对Elasticsearch delete API docs的理解,在这种情况下不必删除文件(但这不是我所看到的)......

  

可以设置父参数,它基本上与...相同   设置11参数。

     

...

     

在没有正确路由的情况下发出删除,将导致文档   不被删除。

1 个答案:

答案 0 :(得分:0)

路由(以及父级)决定使用什么分片。在DB 1.0中,DB知道,需要父级仍然只使用它来决定在哪里寻找。如果对象在那里,它将被删除,但父母是否是真正的父母"没关系。重要的是父母的哈希结果。

你可以使用父键或使用幻想键完美地创建冲突数据(在不同分片上使用相同的索引/类型/ id) - 你拥有的分片越多,冲突的不太可能越多,但这并不能确保安全。请记住: parent 不是外键或像我们在SQL世界中那样强大的东西。