параметр rewrite
Этот параметр предназначен только для опытных пользователей. Изменение значения этого параметра может повлиять на производительность и релевантность поиска.
Elasticsearch использует Apache Lucene для индексации и поиска. В исходном виде Lucene не может выполнить следующие запросы:
Для их выполнения Lucene преобразует эти запросы в более простой вид, например, в bool запрос или в набор битов.
Параметр rewrite определяет:
- Как Lucene вычисляет релевантность каждого совпадающего документа
- Преобразует ли Lucene исходный запрос в запрос
boolили в набор битов - Если запрос преобразован в запрос
bool, какиеtermусловия запроса включаются
Допустимые значения
-
constant_score_blended(По умолчанию) -
Присваивает каждому документу релевантность, равную значению параметра
boost.Этот метод поддерживает реализацию запроса
boolдля самых дорогостоящих терминов, предварительно обрабатывая менее дорогостоящие термины в набор битовых фильтров.Этот метод может привести к тому, что сгенерированный запрос
boolпревысит ограничение на количество условий в настройкеindices.query.bool.max_clause_count. Если запрос превысит это ограничение, Elasticsearch вернёт ошибку. -
constant_score - Использует метод
constant_score_booleanдля меньшего количества соответствующих терминов. В противном случае этот метод последовательно находит все соответствующие термины и возвращает соответствующие документы, используя набор битов. -
constant_score_boolean -
Присваивает каждому документу релевантность, равную значению параметра
boost.Этот метод преобразует исходный запрос в
boolзапрос. Этот запросboolсодержит условиеshouldиtermзапрос для каждого соответствующего термина.Этот метод может привести к тому, что итоговый запрос
boolпревысит ограничение на количество условий в настройкеindices.query.bool.max_clause_count. Если запрос превысит это ограничение, Elasticsearch вернёт ошибку. -
scoring_boolean -
Вычисляет релевантность каждого совпадающего документа.
Этот метод преобразует исходный запрос в
boolзапрос. Этот запросboolсодержит условиеshouldиtermзапрос для каждого соответствующего термина.Этот метод может привести к тому, что итоговый запрос
boolпревысит ограничение на количество условий в настройкеindices.query.bool.max_clause_count. Если запрос превысит это ограничение, Elasticsearch вернёт ошибку. -
top_terms_blended_freqs_N -
Вычисляет релевантность каждого совпадающего документа так, как если бы все термины имели одинаковую частоту. Эта частота является максимальной частотой всех соответствующих терминов.
Этот метод преобразует исходный запрос в
boolзапрос. Этот запросboolсодержит условиеshouldиtermзапрос для каждого соответствующего термина.Итоговый запрос
boolвключает толькоtermзапросы для самых высокорейтинговых терминов по количествуN.Этот метод можно использовать для предотвращения превышения ограничения на количество условий в настройке
indices.query.bool.max_clause_count. -
top_terms_boost_N -
Присваивает каждому соответствующему документу релевантность, равную значению параметра
boost.Этот метод преобразует исходный запрос в
boolзапрос. Этот запросboolсодержит условиеshouldиtermзапрос для каждого соответствующего термина.Итоговый запрос
boolвключает толькоtermзапросы для самых высокорейтинговых терминов по количествуN.Этот метод можно использовать для предотвращения превышения ограничения на количество условий в настройке
indices.query.bool.max_clause_count. -
top_terms_N -
Вычисляет релевантность каждого совпадающего документа.
Этот метод преобразует исходный запрос в
boolзапрос. Этот запросboolсодержит условиеshouldиtermзапрос для каждого соответствующего термина.Итоговый запрос
boolвключает толькоtermзапросы для самых высокорейтинговых терминов по количествуN.Этот метод можно использовать для предотвращения превышения ограничения на количество условий в настройке
indices.query.bool.max_clause_count.
Соображения по производительности для параметра rewrite
Для большинства случаев рекомендуется использовать методы constant_score_blended, constant_score, constant_score_boolean или top_terms_boost_N переписывания.
Другие методы вычисляют оценки релевантности. Эти вычисления часто являются дорогостоящими и не улучшают результаты запроса.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-multi-term-rewrite.html