我试图形成一个查询,如果缺少区域字段或区域具有值ASIA,请列出所有文档。但如果我运行查询,其响应为空列表。我们如何形成这样的查询?

{
  "query": {
    "bool": {
      "must": {
        "match": {
          "region": "ASIA"
        }
      },
      "must_not": {
        "exists": {
          "field": "region"
        }
      }
    }
  }
}

最佳答案

在这种情况下,您需要should

bool(boolean) ->应该-> condition1,condition2

应该= OR,因此下面将匹配满足条件1或条件2的文档

{
  "query": {
    "bool": {
      "should": [
        {
          "terms": {
            "region": [
              "asia"
            ]
          }
        },
        {
          "bool": {
            "must_not": [
              {
                "exists": {
                  "field": "region"
                }
              }
            ]
          }
        }
      ]
    }
  }
}

关于elasticsearch - Elasticsearch查询以查找缺少字段或具有某些值的文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58193250/

10-15 23:18