| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | [[query-dsl-multi-term-rewrite]]== `rewrite` parameterWARNING: This parameter is for expert users only. Changing the value ofthis parameter can impact search performance and relevance.{es} uses https://lucene.apache.org/core/[Apache Lucene] internally to powerindexing and searching. In their original form, Lucene cannot execute thefollowing queries:* <<query-dsl-fuzzy-query, `fuzzy`>>* <<query-dsl-prefix-query, `prefix`>>* <<query-dsl-query-string-query, `query_string`>>* <<query-dsl-regexp-query, `regexp`>>* <<query-dsl-wildcard-query, `wildcard`>>To execute them, Lucene changes these queries to a simpler form, such as a<<query-dsl-bool-query, `bool` query>> or ahttps://en.wikipedia.org/wiki/Bit_array[bit set].The `rewrite` parameter determines:* How Lucene calculates the relevance scores for each matching document* Whether Lucene changes the original query to a `bool`query or bit set* If changed to a `bool` query, which `term` query clauses are included[float][[rewrite-param-valid-values]]=== Valid values`constant_score` (Default)::Uses the `constant_score_boolean` method for fewer matching terms. Otherwise,this method finds all matching terms in sequence and returns matching documentsusing a bit set.`constant_score_boolean`::Assigns each document a relevance score equal to the `boost`parameter.+This method changes the original query to a <<query-dsl-bool-query, `bool`query>>. This `bool` query contains a `should` clause and<<query-dsl-term-query, `term` query>> for each matching term.+This method can cause the final `bool` query to exceed the clause limit in the<<indices-query-bool-max-clause-count, `indices.query.bool.max_clause_count`>>setting. If the query exceeds this limit, {es} returns an error.`scoring_boolean`::Calculates a relevance score for each matching document.+This method changes the original query to a <<query-dsl-bool-query, `bool`query>>. This `bool` query contains a `should` clause and<<query-dsl-term-query, `term` query>> for each matching term.+This method can cause the final `bool` query to exceed the clause limit in the<<indices-query-bool-max-clause-count, `indices.query.bool.max_clause_count`>>setting. If the query exceeds this limit, {es} returns an error.`top_terms_blended_freqs_N`::Calculates a relevance score for each matching document as if all terms had thesame frequency. This frequency is the maximum frequency of all matching terms.+This method changes the original query to a <<query-dsl-bool-query, `bool`query>>. This `bool` query contains a `should` clause and<<query-dsl-term-query, `term` query>> for each matching term.+The final `bool` query only includes `term` queries for the top `N` scoringterms.+You can use this method to avoid exceeding the clause limit in the<<indices-query-bool-max-clause-count, `indices.query.bool.max_clause_count`>>setting.`top_terms_boost_N`::Assigns each matching document a relevance score equal to the `boost` parameter.+This method changes the original query to a <<query-dsl-bool-query, `bool`query>>. This `bool` query contains a `should` clause and<<query-dsl-term-query, `term` query>> for each matching term.+The final `bool` query only includes `term` queries for the top `N` terms.+You can use this method to avoid exceeding the clause limit in the<<indices-query-bool-max-clause-count, `indices.query.bool.max_clause_count`>>setting.`top_terms_N`::Calculates a relevance score for each matching document.+This method changes the original query to a <<query-dsl-bool-query, `bool`query>>. This `bool` query contains a `should` clause and<<query-dsl-term-query, `term` query>> for each matching term.+The final `bool` queryonly includes `term` queries for the top `N` scoring terms.+You can use this method to avoid exceeding the clause limit in the<<indices-query-bool-max-clause-count, `indices.query.bool.max_clause_count`>>setting.[float][[rewrite-param-perf-considerations]]=== Performance considerations for the `rewrite` parameterFor most uses, we recommend using the `constant_score`,`constant_score_boolean`, or `top_terms_boost_N` rewrite methods.Other methods calculate relevance scores. These score calculations are oftenexpensive and do not improve query results.
 |