范围或缺失 - ElasticSearch - 查询 DSL

Range or missing - ElasticSearch - Query DSL

我目前正在尝试将以下逻辑纳入 ES 查询 - http_code 是否存在?如果有,应该在400-600之间;但它也可能丢失。

以下查询不起作用,我认为它需要更改和更正。

{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "http_code": {
              "gte": 400,
              "lt": 600
            }
          }
        },
        {
          "bool": {
            "should": [
              {
                "bool": {
                  "must_not": {
                    "exists": {
                      "field": "http_code"
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}

最初的要求是在范围为 400-600 的 Kibana 仪表板中保存一个过滤器,或者它丢失了。

要进行您建议的查询,您需要执行类似的操作:

The original requirement is to save a filter in a Kibana dashboard with range 400-600 OR it's missing. as:

{
  "query": {
    "bool": {
      "minimum_should_match": 1,
      "should": [
        {
          "range": {
            "http_code": {
              "gte": 400,
              "lt": 600
            }
          }
        },
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "http_code"
              }
            }
          }
        }
      ]
    }
  }
}