elasticsearch/docs/reference/query-languages/query-dsl-fuzzy-query.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

2.9 KiB

navigation_title mapped_pages
Fuzzy
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html

Fuzzy query [query-dsl-fuzzy-query]

Returns documents that contain terms similar to the search term, as measured by a Levenshtein edit distance.

An edit distance is the number of one-character changes needed to turn one term into another. These changes can include:

  • Changing a character (box → fox)
  • Removing a character (black → lack)
  • Inserting a character (sic → sick)
  • Transposing two adjacent characters (act → cat)

To find similar terms, the fuzzy query creates a set of all possible variations, or expansions, of the search term within a specified edit distance. The query then returns exact matches for each expansion.

Example requests [fuzzy-query-ex-request]

Simple example [fuzzy-query-ex-simple]

GET /_search
{
  "query": {
    "fuzzy": {
      "user.id": {
        "value": "ki"
      }
    }
  }
}

Example using advanced parameters [fuzzy-query-ex-advanced]

GET /_search
{
  "query": {
    "fuzzy": {
      "user.id": {
        "value": "ki",
        "fuzziness": "AUTO",
        "max_expansions": 50,
        "prefix_length": 0,
        "transpositions": true,
        "rewrite": "constant_score_blended"
      }
    }
  }
}

Top-level parameters for fuzzy [fuzzy-query-top-level-params]

<field>
(Required, object) Field you wish to search.

Parameters for <field> [fuzzy-query-field-params]

value
(Required, string) Term you wish to find in the provided <field>.
fuzziness
(Optional, string) Maximum edit distance allowed for matching. See Fuzziness for valid values and more information.
max_expansions
(Optional, integer) Maximum number of variations created. Defaults to 50.

::::{warning} Avoid using a high value in the max_expansions parameter, especially if the prefix_length parameter value is 0. High values in the max_expansions parameter can cause poor performance due to the high number of variations examined. ::::

prefix_length
(Optional, integer) Number of beginning characters left unchanged when creating expansions. Defaults to 0.
transpositions
(Optional, Boolean) Indicates whether edits include transpositions of two adjacent characters (ab → ba). Defaults to true.
rewrite
(Optional, string) Method used to rewrite the query. For valid values and more information, see the rewrite parameter.

Notes [fuzzy-query-notes]

Fuzzy queries will not be executed if search.allow_expensive_queries is set to false.