Elasticsearch params存在

时间:2013-07-30 08:32:17

标签: ruby-on-rails json elasticsearch

如何构造查询JSON,以便在过滤时检查是否存在外部参数。

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

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

      }
   ]
}
}}:

JSON中的if子句是查询DSL的无效语法。

1 个答案:

答案 0 :(得分:0)

我认为您可以将existFiltertermFilterand过滤器结合使用。 这将检索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/