параметр rewrite
Этот параметр предназначен только для опытных пользователей. Изменение значения этого параметра может повлиять на производительность поиска и релевантность результатов.
Elasticsearch использует Apache Lucene для индексации и поиска. В исходном виде Lucene не может выполнять следующие запросы:
Для их выполнения Lucene преобразует эти запросы в более простой вид, например, в bool запрос или в набор битов.
Параметр rewrite определяет:
- Как Lucene рассчитывает релевантность каждого соответствующего документа
- Преобразует ли Lucene исходный запрос в запрос типа
boolили набор битов - Если запрос преобразован в запрос типа
bool, какиеtermклаузы запроса включены
Допустимые значения
-
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, 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/7.17/query-dsl-multi-term-rewrite.html