Elasticsearch:在列表中搜索字段 null 或

Elasticsearch: search for field null OR in list

我想在 ElasticSearch 中写这样的东西:

SELECT * 
FROM ...
WHERE name IS NULL OR name IN ("a","b","c");

我可以使用以下方式编写 "IS NULL" 部分:

{
    "query" :
    {
      "bool" : {
      "must_not": {
        "exists": {
          "field": "name"
        }
      }
    }
  }     
}

"IN list"部分:

{
    "query" :
    {
      "bool" : {
          "should" : [
            {
              "terms" : {
                "name" : [
                  "a", "b", "c"
                ]
              }
            }
          ]
      }
   }    
}

但我找不到使用 OR(当然不是 AND)合并这两个查询的方法。

谢谢

您可以使用 bool/should 来结合两者

{
  "query": {
    "bool": {
      "should": [
        {
          "terms": {
            "name": [
              "a",
              "b",
              "c"
            ]
          }
        },
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "name"
              }
            }
          }
        }
      ]
    }
  }
}