| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | [[query-dsl-fuzzy-query]]=== Fuzzy Querydeprecated[3.0.0, Will be removed without a replacement for `string` fields. Note that the `fuzziness` parameter is still supported for match queries and in suggesters. Use range queries for `date` and `numeric` fields instead.]The fuzzy query uses similarity based on Levenshtein edit distance for`string` fields, and a `+/-` margin on numeric and date fields.==== String fieldsThe `fuzzy` query generates all possible matching terms that are within  themaximum edit distance specified in `fuzziness` and then checks the termdictionary to find out which of those generated terms actually exist in theindex.Here is a simple example:[source,js]--------------------------------------------------{    "fuzzy" : { "user" : "ki" }}--------------------------------------------------Or with more advanced settings:[source,js]--------------------------------------------------{    "fuzzy" : {        "user" : {            "value" :         "ki",            "boost" :         1.0,            "fuzziness" :     2,            "prefix_length" : 0,            "max_expansions": 100        }    }}--------------------------------------------------[float]===== Parameters[horizontal]`fuzziness`::    The maximum edit distance. Defaults to `AUTO`. See <<fuzziness>>.`prefix_length`::    The number of initial characters which will not be ``fuzzified''. This    helps to reduce the number of terms which must be examined. Defaults    to `0`.`max_expansions`::    The maximum number of terms that the `fuzzy` query will expand to.    Defaults to `50`.WARNING: This query can be very heavy if `prefix_length` is set to `0` and if`max_expansions` is set to a high number. It could result in every term in theindex being examined![float]==== Numeric and date fieldsPerforms a <<query-dsl-range-query>> ``around'' the value using the`fuzziness` value as a `+/-` range, where:    -fuzziness <= field value <= +fuzzinessFor example:[source,js]--------------------------------------------------{    "fuzzy" : {        "price" : {            "value" : 12,            "fuzziness" : 2        }    }}--------------------------------------------------Will result in a range query between 10 and 14. Date fields support<<time-units,time values>>, eg:[source,js]--------------------------------------------------{    "fuzzy" : {        "created" : {            "value" : "2010-02-05T12:05:07",            "fuzziness" : "1d"        }    }}--------------------------------------------------See <<fuzziness>> for more details about accepted values.
 |