elasticsearch/docs/reference/query-languages/query-dsl-multi-term-rewrite.md
Colleen McGinnis b7e3a1e14b
[docs] Migrate docs from AsciiDoc to Markdown (#123507)
* delete asciidoc files

* add migrated files

* fix errors

* Disable docs tests

* Clarify release notes page titles

* Revert "Clarify release notes page titles"

This reverts commit 8be688648d.

* Comment out edternal URI images

* Clean up query languages landing pages, link to conceptual docs

* Add .md to url

* Fixes inference processor nesting.

---------

Co-authored-by: Liam Thompson <32779855+leemthompo@users.noreply.github.com>
Co-authored-by: Liam Thompson <leemthompo@gmail.com>
Co-authored-by: Martijn Laarman <Mpdreamz@gmail.com>
Co-authored-by: István Zoltán Szabó <szabosteve@gmail.com>
2025-02-27 17:56:14 +01:00

5.8 KiB

mapped_pages
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-term-rewrite.html

rewrite parameter [query-dsl-multi-term-rewrite]

::::{warning} This parameter is for expert users only. Changing the value of this parameter can impact search performance and relevance. ::::

{{es}} uses Apache Lucene internally to power indexing and searching. In their original form, Lucene cannot execute the following queries:

To execute them, Lucene changes these queries to a simpler form, such as a bool query or a 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

Valid values [rewrite-param-valid-values]

constant_score_blended (Default)
Assigns each document a relevance score equal to the boost parameter.

This method maintains a bool query like implementation over the most costly terms while pre-processing the less costly terms into a filter bitset.

This method can cause the generated bool query to exceed the clause limit in the indices.query.bool.max_clause_count setting. If the query exceeds this limit, {{es}} returns an error.

constant_score
Uses the constant_score_boolean method for fewer matching terms. Otherwise, this method finds all matching terms in sequence and returns matching documents using 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 bool query. This bool query contains a should clause and 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 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 bool query. This bool query contains a should clause and 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 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 the same frequency. This frequency is the maximum frequency of all matching terms.

This method changes the original query to a bool query. This bool query contains a should clause and term query for each matching term.

The final bool query only 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 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 bool query. This bool query contains a should clause and 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 setting.

top_terms_N
Calculates a relevance score for each matching document.

This method changes the original query to a bool query. This bool query contains a should clause and term query for each matching term.

The final bool query only 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 setting.

Performance considerations for the rewrite parameter [rewrite-param-perf-considerations]

For most uses, we recommend using the constant_score_blended, constant_score, constant_score_boolean, or top_terms_boost_N rewrite methods.

Other methods calculate relevance scores. These score calculations are often expensive and do not improve query results.