elasticsearch相当于sql“where(condition1 or(condition2 and condition3))”

dsekswqp  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(352)

我对elastic search很陌生,很难弄清楚如何将下面的sql查询转换为es语法:

WHERE (id IS NULL OR (id IS NOT NULL AND test = 0))

我想我必须在某个地方使用“should”关键字,也许还有过滤器,但我不太确定如何在es中进行查询。

xmjla07d

xmjla07d1#

您的查询应该是:

{
  "bool": {
    "should": [
      {
        "bool": {
          "must_not": [
            {
              "exists": {
                "field": "id"
              }
            }
          ]
        }
      },
      {
        "bool": [
          "must": [
            {
              "exists": {
                "field": "id"
              }
            },
            {
              "term": {
                "test": {
                  "value": 0
                }
              }
            }
          ]
        ]
      }
    ]
  }
}

相关问题