Есть ли разница в производительности между запросом constant_score и bool с использованием фильтра? - PullRequest
0 голосов
/ 05 февраля 2020

Когда дело доходит до «разницы в производительности», я до сих пор ничего не могу почитать.

Исходя из своих официальных документов, для фильтрации, используемой в запросе bool

Предложение (запрос) должно появляться в соответствующих документах. Однако в отличие от оценка запроса будет игнорироваться . Предложения фильтра выполняются в контексте фильтра, это означает, что оценка игнорируется, и предложения учитываются для кэширования .

Что касается запроса с постоянной оценкой

Фильтр запросов не вычисляет баллы релевантности. Чтобы ускорить производительность, Elasticsearch автоматически кэширует часто используемые фильтры запросов.


Просто предположение

Постоянный запрос не будет рассчитываться (TF-IDF или более сложные algs), в то время как запрос bool выполнит вычисление, но вернет 0 (игнорируя его); таким образом, константный запрос более производительный.

Кроме того, когда дело доходит до указанной оценки, вы должны использовать запрос с постоянной оценкой вместо запроса bool, который будет возвращать только 0.

QAs, которые я только что прочитал : Elasticsearch: запрос constant_score против запроса bool.filter

1 Ответ

0 голосов
/ 05 февраля 2020

НЕТ, разницы в производительности нет, так как они одинаковые.

Опять-таки, его официальное занятие c обсуждение контекста фильтра :

В контексте фильтра предложение запроса отвечает на вопрос «Является ли этот документ соответствовать этому предложению запроса? » Ответ прост: да или нет - баллы не рассчитываются.

И

Контекст фильтра действует при каждой передаче условия запроса для параметра фильтра, такого как параметры фильтра или must_not в запросе bool, параметр фильтра в запросе constant_score или агрегация фильтра.

...