#elasticsearch #select #count #nested #size
#elasticsearch #выберите #количество #вложенный #размер
Вопрос:
Я хотел бы получить все документы, соответствующие моим критериям поиска, и отсортировать их на основе количества вложенных объектов в определенном поле. Я бы хотел также отобразить количество вложенных объектов. У меня работает первое, но мне трудно понять, как сделать второе.
Вот мой запрос:
GET _search
{
"_source": "nested_objects",
"query": {
"bool": {
"must": [
{"nested" : {
"path" : "nested_objects",
"query" : {
"bool" : {
"should" :[
{"term" : {"nested_objects.is_active": true}}
]
}
},
"score_mode": "sum"
}}
]
}
}
}
Результат отображается в виде:
"_source": {
"nested_objects": [
{
"is_active": true
},
...
]
}
Однако мне нужно, чтобы результат был таким:
"_source": {
"size": 4,
"nested_objects": [
{
"is_active": true
},
{
"is_active": true
},
{
"is_active": true
},
{
"is_active": true
}
]
}
Есть идеи, как я могу получить размер, отображаемый в запросе?
Заранее спасибо.
Ответ №1:
Похоже, все, что мне нужно было добавить "inner_hits": {}
в мой вложенный запрос:
GET _search
{
"_source": "innert_hits",
"query": {
"bool": {
"must": [
{"nested" : {
"path" : "nested_objects",
"query" : {
"bool" : {
"should" :[
{"term" : {"nested_objects.is_active": true}}
]
}
},
"inner_hits": {},
"score_mode": "sum"
}}
]
}
}
}
Это не возвращает результат, который я хотел в моих вышеуказанных требованиях, но это достаточно хорошо для моего варианта использования.