У меня проблема с производительностью Elasticsearch (6.3). В моем индексе есть документы 1B, и мне нужно выполнить агрегирование по небольшому подмножеству данных.
Мой индекс выглядит как
"s-data": {
"mappings": {
"s-type": {
"properties": {
"c": {
"type": "integer"
},
"r": {
"type": "keyword"
},
"s": {
"type": "integer"
},
"t": {
"type": "keyword"
}
}
}
}
}
}
и мой запрос выглядит как
{
"query":{
"bool":{
"filter":[
{"term":{"t": "foo"}},
{"term":{"c": 1}},
{"terms":{"r": ["foobar", "foobaz"]}},
{"term":{"s": 3}}
]
}
},
"aggs":{
"recips":{
"terms": {"field": "r"}
}
}
}
Сам запрос выполняется за 15 мс, но как только я добавлю агрегацию, все закончится. Я предполагаю, что агрегация выполняется для всего набора данных 1B doc. Как я могу сделать агрегацию только по результатам моего запроса?