web-dev-qa-db-ja.com

エラスティッククエリDSL:用語のワイルドカードはフィルターですか?

用語フィルターを使用してドキュメントをフィルターしようとしています。フィルターにワイルドカードを導入する方法がわかりません。私はこのようなものを試しました:

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

しかし、これでSearchParseExceptionが発生します。フィルターフレームワーク内でワイルドカードを使用する方法はありませんか?

20
Mohitt

termsフィルターはワイルドカードをサポートしていませんが、クエリはサポートしています。代わりにこのクエリを試してください

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

または、絶対にフィルターを使用する必要がある場合は、 regexp フィルターも試すことができます。

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