"chods": {
"mappings": {
"chod": {
"properties": {
"state": {
"type": "text"
}
}
},
"chods": {},
"variant": {
"_parent": {
"type": "chod"
},
"_routing": {
"required": true
},
"properties": {
"percentage": {
"type": "double"
}
}
}
}
},
执行时:
PUT /chods/variant/565?parent=36442
{ // some data }
它返回:
{
"_index":"chods",
"_type":"variant",
"_id":"565",
"_version":6,
"result":"updated",
"_shards":{
"total":2,
"successful":1,
"failed":0
},
"created":false
}
但是当我运行这个查询时:
GET /chods/variant/565?parent=36442
它返回parent = 36443
的变体{
"_index": "chods",
"_type": "variant",
"_id": "565",
"_version": 7,
"_routing": "36443",
"_parent": "36443",
"found": true,
"_source": {
...
}
}
为什么它与父级36443而不是36442一起返回?
答案 0 :(得分:0)
当我尝试用你的步骤重现这个时,我得到了预期的结果(版本= 36442)。我注意到,在您使用"_parent": "36442"
的文档的PUT之后,输出为"_version":6
。在您对文档的GET中,返回"_version": 7
。您是否有可能发布该文档的另一个版本?
我还注意到GET /chods/variant/565?parent=36443
实际上不会按父ID过滤 - 忽略查询参数。如果您确实希望按父ID进行过滤,则这是您要查找的查询:
GET /chods/_search
{
"query": {
"parent_id": {
"type": "variant",
"id": "36442"
}
}
}
答案 1 :(得分:0)
正如@fylie所指出的那样,主要的问题是,如果你使用相同的文档ID,你将被上一版本覆盖你的文件 - 有点
假设我们有索引/测试并键入“a”,它是“test”类型的子类,我们执行以下命令:
PUT /tests/a/50?parent=25
{
"item": "C"
}
PUT /tests/a/50?parent=26
{
"item": "D"
}
PUT /tests/a/50?parent=50
{
"item": "E",
"item2": "F",
}
结果如何?那么它可以导致创建1-3个文档。 如果它将路由到同一个分片,您将得到一个文档,该文档将有3个版本。
如果它将路由到3个不同的分片,最终会有3个新文件。