Ссылаясь на приведенные в официальной документации примеры построения отношений родитель-потомок - https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html
Ссылка предоставила отношение соединения вопрос-ответ, где вопрос является родительским, а ответ - дочерним типом.
Если вам нужно найти всех родителей, соответствующих некоторому тексту, а также их дочерние элементы, соответствующие тексту, специфичному для детей, в одном запросе, как бы вы это сделали?
Допустим, у них есть пары ключ-значение в документе json, как показано ниже, и мы ищем родителей, соответствующих тексту в вопросе, и детей, соответствующих значению в тексте ответа.
Parent --> question --> "question-text" : "Geography: Where is Mt. Everest?"
Child --> answer --> "answer-text" : "Nepal?"
Нам нужны не только родители или только дети, но и все родители со связанными с ними детьми, которые соответствуют запросу.
Я знаю, что внутренние обращения - это вариант, но не могу понять использование - https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html
Надеюсь, вопрос ясен, при необходимости могу поподробнее.
Я также пробовал пример, упомянутый здесь, для внутренних обращений родитель-потомок:
Пример:
POST test_index/_search
{
"query": {
"has_child": {
"type": "child",
"query": {
"match": {
"number": 2
}
},
"inner_hits": {}
}
}
}
Это дает мне подходящих детей всех родителей. Как мне добавить фильтр к родительскому элементу и запросить только определенных родителей в том же запросе (вместе с дочерним фильтром)? Можно ли фильтровать родительские записи по определенному полю в одном запросе?
Что-то вроде этого -
POST test_index/_search
{
"query": {
<match parents first on number:1 and then match the children below>
"has_child": {
"type": "child",
"query": {
"match": {
"number": 2
}
},
"inner_hits": {}
}
}
}