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与过滤器结合termFilter使用。and这将检索 locality_name 字段存在且 locality_name 字段值等于您指定值的文档。

"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 回答