elasticsearchwildcardquerydslbooleanquery

Elastic query DSL: Wildcards in terms filter?


I am trying to filter the documents using terms filter. I am not sure how to introduce wildcards in filter. I tried something like this:

"filter":{
  "bool":{
       "must":{
          "terms":{
             "wildcard" :  {
                "aircraft":[
                   "a380*"
                ]
             }
         }
      }
   }
}

But I get SearchParseException with this. Is there no way to use wildcard within filter framework?


Solution

  • The terms filter doesn't support wildcards, queries do, though. Try this query instead

    {
      "query": {
        "bool": {
          "must": {
            "wildcard": {
              "aircraft": "a380*"
            }
          }
        }
      }
    }
    

    Or if you absolutely need to use filters, you can try the regexp filter, too:

    {
      "query": {
        "filtered": {
          "filter": {
            "bool": {
              "must": {
                "regexp": {
                  "aircraft": "a380.*"
                }
              }
            }
          }
        }
      }
    }
    

    UPDATE:

    In latest ES versions, use the following query instead since filtered has been removed:

    {
      "query": {
        "bool": {
          "filter": {
             "regexp": {
               "aircraft": "a380.*"
             }
          }
        }
      }
    }