Loading

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.

 GET /_search { "query": { "fuzzy": { "user.id": { "value": "ki" } } } } 
 GET /_search { "query": { "fuzzy": { "user.id": { "value": "ki", "fuzziness": "AUTO", "max_expansions": 50, "prefix_length": 0, "transpositions": true, "rewrite": "constant_score_blended" } } } } 
<field>
(Required, object) Field you wish to search.
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.

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