Итак, вот сценарий:
Я выполняю эластичный поисковый запрос.Для простоты предположим, что я фильтрую по полям title
и, по выбору, по полям category_id
(запрос запроса) и price
(запрос диапазона).
Я отфильтровал глобальную агрегацию в поле category_id
(он фильтруется по тем же запросам, что и основной, за исключением запроса category_id
term).
Я делаю так, поэтому после фильтрации основного запроса с помощью category_id
я все еще вижу полное агрегирование всех других категорий.
Теперь проблема в том, что после того, как ядобавил это глобальное агрегирование общее время запроса в основном удвоилось.Значит ли это, что в фоновом режимеasticsearch, по сути, запускает один и тот же набор запросов дважды (1-й раз для создания набора фактических документов, соответствующих запросу, и 2-й раз для повторного сканирования всего индекса для построения агрегации)
Если дело обстоит так ... есть ли вообще какой-либо способ достичь желаемого результата без использования глобальной агрегации?Может быть, каким-то образом можно создать простую агрегацию контекста запроса, которая фильтруется по всем тем же предложениям, кроме одного?