2015-06-24 3 views
0

Я использую агрегацию топовых хитов в elasticsearch. Однако, когда я добавляю фильтр к запросу, он возвращает 0 ударов (ожидаемое поведение), и агрегации, однако, не соответствуют фильтру и возвращают ненулевые документы. У меня создалось впечатление, что агрегации работают в той же области, что и в запросе? Кажется, не работает так. Есть идеи?Скопированные агрегирования с фильтрами запросов

ответ

1

Возможно, вы используете верхний уровень filter вместо отфильтрованного запроса. Фильтр верхнего уровня интерпретируется как post filter и выполняется после выполнения запроса, влияя на хиты, но не на грани.

Если вы просто преобразуете фильтр сообщений в filtered query, агрегации будут правильно рассчитаны только по результатам вашего фильтра.

{ 
    "query":{ 
     "filtered":{ 
     "filter": // your filter as before 
     } 
    }, 
    "aggs": // now they will be correctly calculated 
} 
+0

Спасибо! Происходит ли агрегация до/после фильтров? –