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

sam*_*sam 13 elasticsearch

我试图获得一个可以返回满足过滤条件的json的查询.我试图得到一个响应,其中包含一个名为"test1"的字段,它也应该缺少一个字段"test2",我已经尝试了查询

{
 "query": {
  "filtered": {
  "query": {
    "match_all": {}
   },
      "filter": {
         "missing": {
        "field": "test2"
       },
       "exists": {
         "field": "test1"
       }
      }
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

上面的查询返回所有具有字段"test1"的字段,并且它还返回缺少字段"test2"的提要,我试图缩小响应范围,因为我只希望提供满足这两个条件的提要.

imo*_*tov 24

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

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": [{
            "missing": {
              "field": "test2"
            }
          }, {
            "exists": {
              "field": "test1"
            }
          }]
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)