Я использую агрегацию топовых хитов в elasticsearch. Однако, когда я добавляю фильтр к запросу, он возвращает 0 ударов (ожидаемое поведение), и агрегации, однако, не соответствуют фильтру и возвращают ненулевые документы. У меня создалось впечатление, что агрегации работают в той же области, что и в запросе? Кажется, не работает так. Есть идеи?Скопированные агрегирования с фильтрами запросов
0
A
ответ
1
Возможно, вы используете верхний уровень filter
вместо отфильтрованного запроса. Фильтр верхнего уровня интерпретируется как post filter и выполняется после выполнения запроса, влияя на хиты, но не на грани.
Если вы просто преобразуете фильтр сообщений в filtered query, агрегации будут правильно рассчитаны только по результатам вашего фильтра.
{
"query":{
"filtered":{
"filter": // your filter as before
}
},
"aggs": // now they will be correctly calculated
}
Спасибо! Происходит ли агрегация до/после фильтров? –