用于获取字段中具有空值的记录的elasticsearch查询

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

我试图获取字段iso3包含一些值且为null的所有记录的结果,但总是出现以下错误:

{
    "code": 400,
    "error": "RequestError(400, 'parsing_exception', '[or] query malformed, no start_object after query name')"
}

以下是查询:

{
  "query": {
      "bool": {
            "should": [
    {"term":{"iso3":"afg"}},
    {"term":{"iso3":"idn"}},
    {"term":{"iso3":"bgd"}},
        {
           "or": [
               {"term": { "iso3": "" } },
               {"term": { "iso3": null}}
            ]
        }
    ]
      }

  },
  "size": 20
}

所以这部分是错的,但我不明白为什么

{
           "or": [
               {"term": { "iso3": "" } },
               {"term": { "iso3": null}}
            ]
        }
xcitsw88

xcitsw881#

根本没有 or 查询,但您可以通过以下查询实现所需的功能:

{
  "query": {
    "bool": {
      "minimum_should_match": true,
      "should": [
        {
          "term": {
            "iso3": "afg"
          }
        },
        {
          "term": {
            "iso3": "idn"
          }
        },
        {
          "term": {
            "iso3": "bgd"
          }
        },
        {
          "term": {
            "iso3": ""
          }
        },
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "iso3"
              }
            }
          }
        }
      ],
      "filter": [
        {
          "exists": {
            "field": "iso2"
          }
        }
      ]
    }
  },
  "size": 20
}

相关问题