web-dev-qa-db-fra.com

Elastic query DSL: jokers en termes de filtre?

J'essaie de filtrer les documents en utilisant un filtre de termes. Je ne sais pas comment introduire des caractères génériques dans le filtre. J'ai essayé quelque chose comme ça:

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

Mais je reçois SearchParseException avec cela. N'y a-t-il aucun moyen d'utiliser des caractères génériques dans le cadre de filtrage?

20
Mohitt

Le filtre terms ne prend pas en charge les caractères génériques, mais les requêtes le font. Essayez plutôt cette requête

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

Ou si vous avez absolument besoin d'utiliser des filtres, vous pouvez également essayer le filtre regexp :

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