如何按特定值搜索或在Elasticsearch中不存在字段

时间:2017-10-05 23:36:28

标签: elasticsearch

我试图进行查询,其中字段不存在或位于值数组中,在mongo中它将是这样的。

$or: [
    {
        field: {
            $exists: false
        }
    },
    {
        field: [val1, val2]
    }
]

我尝试了几种变体,但似乎无法找到解决方案。

EDIT1:

基本上我认为,查询应该是这样的。

query: {
  "bool": {
    "should": [
        "must": {...logic}
        "must_not": {...logic}
     ]
  }
}

返回

  

“must_not”格式错误

1 个答案:

答案 0 :(得分:1)

你需要这样做:

{
  "query": {
    "bool": {
      "should": [
        {
          "terms": {
            "field": [
              "val1",
              "val2"
            ]
          }
        },
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "field"
              }
            }
          }
        }
      ]
    }
  }
}