Search code examples
elasticsearchsearchfuzzy-search

ElasticSearch - creating exceptions for fuzzy terms


I have simple elastic query that does a simple text field search with the fuziness distance of one:

GET /jobs/_search
{
  "query": {
    "fuzzy": {
      "attributes.title": {
        "value": "C#"
        "fuzziness": 1
      }
    }
  }
}

The above query does exactly what it is told to do, but I have a cases where I don't want a word to resolve (with fuzziness) to another specific word. In this case, I don't want C# to also return C++ results. Similarly I don't want cat to return car results.

However I do still need the fuzziness option if someone did actually misspelled cat. In that case it can return results of both cat and car.


Solution

  • I think this is possible with some bool query combination, it should be something like this:

    bool:
        //should
            //match query without fuzzy
            //bool
                //must 
                    //must with fuzzy query 
                    //must_not with match query