Fuzzy query
editFuzzy query
editReturns 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
editSimple example
editresp = client.search( query={ "fuzzy": { "user.id": { "value": "ki" } } }, ) print(resp)
response = client.search( body: { query: { fuzzy: { 'user.id' => { value: 'ki' } } } } ) puts response
const response = await client.search({ query: { fuzzy: { "user.id": { value: "ki", }, }, }, }); console.log(response);
GET /_search { "query": { "fuzzy": { "user.id": { "value": "ki" } } } }
Example using advanced parameters
editresp = client.search( query={ "fuzzy": { "user.id": { "value": "ki", "fuzziness": "AUTO", "max_expansions": 50, "prefix_length": 0, "transpositions": True, "rewrite": "constant_score_blended" } } }, ) print(resp)
response = client.search( body: { query: { fuzzy: { 'user.id' => { value: 'ki', fuzziness: 'AUTO', max_expansions: 50, prefix_length: 0, transpositions: true, rewrite: 'constant_score_blended' } } } } ) puts response
const response = await client.search({ query: { fuzzy: { "user.id": { value: "ki", fuzziness: "AUTO", max_expansions: 50, prefix_length: 0, transpositions: true, rewrite: "constant_score_blended", }, }, }, }); console.log(response);
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
edit-
<field>
- (Required, object) Field you wish to search.
Parameters for <field>
edit-
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
.Avoid using a high value in the
max_expansions
parameter, especially if theprefix_length
parameter value is0
. High values in themax_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
editFuzzy queries will not be executed if search.allow_expensive_queries
is set to false.