The elastic search documentation for Parent-Child joins makes clear it is required to include the ID of the parent document in the routing so that the child document ends up in the same shard.
The specification of the join field in the child object also includes this relationship data.
Why does the parent document need to be specified twice, and why does the Elastic API accept documents where the two instances of this link are different?
Parent Child Join Documentation
PUT my-index-000001/_doc/3?routing=1&refresh
{
"my_id": "3",
"text": "This is an answer",
"my_join_field": {
"name": "answer",
"parent": "1"
}
}
In the above example both the routing=1 and the "parent" : "1" specify the parent document ID for this child. If the json document contains "parent" : "2" while maintaining the routing=1 the insert is accepted, but the resultant child document doesn't appear to be retrievable using has_child or has_parent queries.
question from:
https://stackoverflow.com/questions/65924111/elasticsearch-parent-join-duplicate-parent-specification 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…