Ниже запрос - это то, что вы ищете. Я использовал запрос Bool
Допустим, у вас есть приведенное ниже отображение для parent-child, т. Е. У вас есть question
, а его дочерние элементы answer
.
Отображение
PUT <your_index_name>
{
"mappings": {
"_doc": {
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"question": "answer"
}
}
}
}
}
}
Запрос
POST <your_index_name>/_search
{
"query":{
"bool":{
"must":[
{ "term":{ "my_join_field":"question" }},
{
"bool":{
"must_not":[
{ "has_child":{
"type":"answer",
"query":{ "match_all":{} }
}
}
]
}
}
]
}
}
}
Приведенный выше запрос будет отображать все родительские документы, т.е. question
, у которых нет дочерних элементов, т. Е. answer
.
Обратите внимание, что если вы конвертируете must_not
в must
в приведенном выше запросе, он вернет вам все родительские документы, т.е. question
, у которых есть дочерние элементы, т.е. answer
;)
Теперь, если вам нужны только родительские документы. т.е. все родительские документы, ваш запрос будет просто в следующем формате:
Запрос всех родительских документов
POST <your_index_name>/_search
{
"query":{
"bool":{
"must":[
{
"term":{
"my_join_field":"question"
}
}
]
}
}
}
ИЛИ это может быть просто, как показано ниже:
POST <your_index_name>/_search
{
"query": {
"term": {
"my_join_field": "question"
}
}
}
В основном я реализовал Term Queries .
Дайте мне знать, если это поможет!