在Elasticsearch中,我为文档类型定义了_parent
映射(让我们称之为homes
),并将一些文档编入索引。它们似乎被正确编入索引,因为当我搜索具有匹配某些条件的子项的父项时(使用has_child
),将返回预期的结果。
“问题”是当我为像...这样的孩子发出删除时。
curl -XDELETE 'http://localhost:9200/test/homes/1?parent=11'
即使身份homes
的{{1}}文档的父级不是1
,也会成功。
这是预期的行为吗?
根据我对Elasticsearch delete API docs的理解,在这种情况下不必删除文件(但这不是我所看到的)......
可以设置父参数,它基本上与...相同 设置
11
参数。...
在没有正确路由的情况下发出删除,将导致文档 不被删除。
答案 0 :(得分:0)
路由(以及父级)决定使用什么分片。在DB 1.0中,DB知道,需要父级仍然只使用它来决定在哪里寻找。如果对象在那里,它将被删除,但父母是否是真正的父母"没关系。重要的是父母的哈希结果。
你可以使用父键或使用幻想键完美地创建冲突数据(在不同分片上使用相同的索引/类型/ id) - 你拥有的分片越多,冲突的不太可能越多,但这并不能确保安全。请记住: parent 不是外键或像我们在SQL世界中那样强大的东西。