0

フィルタリング中に外部パラメーターの存在をチェックするようにクエリ JSON を作成するにはどうすればよいですか。

{"query": {
    "filtered": {
        "query": {
            "match_all": {}

}}},
"filter": {
"and": {
   "filters": [
      {
          "term": {
             "locality_name": params[:locality_name] if params[:locality_name].present?
          }

      }
   ]
}
}}:

JSONのif句はクエリ DSL の無効な構文です。

4

1 に答える 1

0

このようなフィルターexistFilterと組み合わせることができると思います。これにより、locality_name フィールドが存在し、locality_name フィールドの値が指定した値と等しいドキュメントが取得されます。termFilterand

"filter" : {
            "and" : [
                {
                    "exists" : { "field" : "locality_name" }
                },
                {
                    "term" : { "locality_name" : "your_locality_name" }
                }
            ]
        }

http://www.elasticsearch.org/guide/reference/query-dsl/exists-filter/

http://www.elasticsearch.org/guide/reference/query-dsl/and-filter/

于 2013-07-30T12:25:35.547 に答える