Я пишу API для агрегирования некоторых данных в Elasticsearch, один из них считает документы.Я использую фильтр terms
и агрегации terms
с большим количеством идентификаторов, чтобы получить их.Проблема в том, что Elasticsearch, похоже, не возвращает контейнер с термином, которого нет в запросе выше.Есть ли какой-нибудь простой и эффективный способ сделать это?
Я пытался следовать этому , и это вроде как решает проблему, но он не оптимизирован с использованием большого количества терминов запроса.Мой API должен запрашивать как минимум 50 идентификаторов, и использование такого большого количества запросов term
не очень хорошая идея
Например, я использовал это для агрегирования данных:
{
"size": 0,
"aggs":{
"matching_values_field1": {
"filter": {
"terms" : { "myfield" : ["1", "2", "3","100"]}
},
"aggs": {
"myfield" : {
"terms" : {
"field" : "myfield",
"min_doc_count": 0
}
}
}
}
}
}
и ответ просто вернуть не включил 100
ведро
{
"aggregations": {
"matching_values_1": {
"doc_count": 11,
"myfield": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 2,
"doc_count": 6
},
{
"key": 1,
"doc_count": 3
},
{
"key": 3,
"doc_count": 2
},
{
"key": 0,
"doc_count": 0
},
{
"key": 0.5,
"doc_count": 0
},
{
"key": 4,
"doc_count": 0
},
{
"key": 5,
"doc_count": 0
},
{
"key": 6,
"doc_count": 0
},
{
"key": 14,
"doc_count": 0
}
]
}
}
}
}
Спасибо за вашу помощь!