【问题标题】:Elasticsearch: search for field null OR in listElasticsearch:在列表中搜索字段空或
【发布时间】:2017-12-17 23:06:38
【问题描述】:

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

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

我可以使用以下方法编写“IS NULL”部分:

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

“IN 列表”部分:

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

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

谢谢

【问题讨论】:

    标签: search elasticsearch elasticsearch-5 nosql


    【解决方案1】:

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

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

    【讨论】:

    • 太棒了,很高兴它有帮助!
    猜你喜欢
    • 2021-03-10
    • 2018-12-28
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2018-10-12
    • 2018-12-22
    相关资源
    最近更新 更多