join
datatypeについて質問です。
ドキュメントの親子関係が
- 子 a → b → c 親
というようになっており、今後も
- 子 a → b → c → d → e 親
のように増えていくことが考えられる場合に、
その時点でのaの一番上の親(前者であればc, 後者であればe)を
一度で取得するようなことは出来るのでしょうか?
やはりhas_child queryなどを用いて、一番上の親が取得出来るまでループする必要があるのでしょうか?
イメージとしては
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"new": "old"
}
}
}
}
}
}
PUT my_index/_doc/c
{
"my_join_field": {
"name": "new"
}
}
PUT my_index/_doc/b?routing=c
{
"my_join_field": {
"name": "old",
"parent": c
}
}
PUT my_index/_doc/a?routing=b
{
"my_join_field": {
"name": "old",
"parent": b
}
}
# 以下のようなクエリでaの親としてcを取得したい
GET my_index/_search
{
"query": {
"has_child": {
"type": "old",
"query": {
"match": {
"_id": a
}
}
}
}
}
のようなものを想定しております。
Elasticsearchのバージョンは6.3.1です。
お手数お掛けしますが、ご教授頂ければ幸いです。
よろしくお願い致します。