Я не вижу никакого описания того, когда я должен использовать запрос или фильтр или какую-то комбинацию из двух. Может кто-нибудь объяснить или указать мне на объяснение?
Запросы против фильтров
Ответ 1
Разница проста: фильтры кэшируются и не влияют на оценку, поэтому быстрее, чем запросы. Посмотрите здесь. Предположим, что запрос обычно является тем, что тип пользователя и довольно непредсказуемый, в то время как фильтры помогают пользователям сужать результаты поиска, например, используя грани.
Ответ 2
Вот что говорится в официальной документации:
Как правило, вместо запросов следует использовать фильтры:
- для двоичных да/нет поиска
- для запросов на точные значения
Как правило, вместо фильтров следует использовать запросы:
- для полнотекстового поиска
- где результат зависит от показателя релевантности
Ответ 3
Несколько дополнений к тому же. Сначала применяется фильтр, затем запрос обрабатывается по его результатам. Чтобы сохранить бинарное истинное/ложное соответствие для каждого документа, используется так называемый битразрядный массив. Этот массив BitSet находится в памяти, и это будет использоваться со второго раза, когда будет запрошен фильтр. Таким образом, используя структуру данных битового массива, мы можем использовать кешированный результат.
Еще один момент, который следует отметить здесь, кеш фильтра создается только тогда, когда запрос выполняется, следовательно, только от второго попадания, мы фактически получаем преимущество кеширования.
Но тогда вы можете использовать теплый API, чтобы перерасти это. Когда вы регистрируете запрос с фильтром против более теплого API, он будет следить за тем, чтобы это выполнялось против нового сегмента, когда он приходит вживую. Следовательно, мы получим согласованную скорость от самого первого выполнения.
Ответ 4
В основном, запрос используется, когда вы хотите выполнить поиск в ваших документах с помощью оценки. Фильтры используются для сужения набора результатов, полученных с помощью запроса. Фильтры являются логическими.
Например, скажите, что у вас есть индекс ресторанов, вроде zomato. Теперь вы хотите найти рестораны, которые обслуживают "пиццу" , что в основном является ключевым словом для поиска.
Итак, вы будете использовать запрос, чтобы найти все документы, содержащие "пицца" , и некоторые результаты будут получены.
Скажите, что вам нужен список ресторанов, которые обслуживают пиццу и имеют рейтинг по крайней мере 4.0.
Итак, вам нужно будет использовать ключевое слово "пицца" в вашем запросе и применить фильтр для оценки как 4.0.
Что происходит, так это то, что фильтры обычно применяются к результатам, полученным путем запроса вашего индекса.