Elasticsearch - 对于过滤器

时间:2018-04-12 18:25:05

标签: python-3.x elasticsearch

我想编写一个查询,我想检查ES中是否存在给定过滤器的1个或多个字段。我想得到过滤器中存在的1个或多个字段中的哪个字段以及哪些字段不存在。

存在查询可以帮助它吗?目前我所拥有的是 -

{   "query": {
    "bool": {
      "must": [
        {
          "match": {
            "mykey": "my_val02"
          }
        },
        {
          "exists": {
            "field": "field_key1"
          }
        }
      ]
    }   } }

但这似乎过滤了具有field_key1的文档。

我想要一些我可以决定是否 - field_key1存在于过滤器" mykey:myvalue1" field_key2存在于过滤器" mykey:myvalue1" 过滤器" mykey:myvalue1"

中不存在field_key3

关于如何做的任何想法?

1 个答案:

答案 0 :(得分:0)

你几乎就在那里,坚持像

这样的must_not子句中的存在查询
{
   "query":{
      "bool":{
         "must":[
            {
               "match":{
                  "mykey":"my_val02"
               }
            },
            {
               "must_not":{
                  "exists":{
                     "field":"field_key1"
                  }
               }
            }
         ]
      }
   }
}

这将返回my_val02和field_key1不存在的所有文档。要添加其他子句,请添加outer should子句并根据需要将内容复制到上面