在单个查询中一起使用missing和exists过滤器

时间:2013-04-11 12:16:51

标签: elasticsearch

我正在尝试获取一个可以返回满足两个过滤条件的json的查询。我正在尝试获取一个包含一个名为“test1”的字段的Feed的响应,并且它还应该缺少一个字段“test2”,我已经尝试了查询

{
 "query": {
  "filtered": {
  "query": {
    "match_all": {}
   },
      "filter": {
         "missing": {
        "field": "test2"
       },
       "exists": {
         "field": "test1"
       }
      }
    }
  } 
}

上面的查询返回所有字段为“test1”的字段,并且还返回缺少字段“test2”的字段,我正在尝试缩小响应范围,因为我只希望提供满足这两个条件的提要。

1 个答案:

答案 0 :(得分:24)

您可以使用bool filter组合两个或多个过滤器:

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": [{
            "missing": {
              "field": "test2"
            }
          }, {
            "exists": {
              "field": "test1"
            }
          }]
        }
      }
    }
  }
}