弹性搜索查询问题,范围格式错误的查询,预期 END_OBJECT 但发现 FIELD_NAME

Meh*_*dad 2 elasticsearch

我无法弄清楚这个查询有什么问题。“范围”和“存在”都独立工作,但一起我得到parsing expectionrange malformed query, expected END_OBJECT but found FIELD_NAME。有人能弄清楚这个查询有什么问题吗?

{
"query": {
  "range":{
     "@timestamp":{
        "gte":"2019-08-04T11:00:00",
        "lt":"2019-10-04T12:00:00"
     }
  },
  "exists": {
      "field": "params.zone"
  }  

},
"_source": ["@timestamp", "params.zone"]
}
Run Code Online (Sandbox Code Playgroud)

Mys*_*ion 6

如果您想组合多个查询,就像您正在做的那样,range并且exists您需要使用bool 查询并决定哪些子句是必需的 ( must)、可选的 ( should)、过滤器 ( filter) 或不应出现在结果中 (must_not )

可以工作的查询可能如下所示(在此示例中您是子句是强制性的):

{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "@timestamp": {
              "gte": "2019-08-04T11:00:00",
              "lt": "2019-10-04T12:00:00"
            }
          }
        },
        {
          "exists": {
            "field": "params.zone"
          }
        }
      ]
    }
  },
  "_source": [
    "@timestamp",
    "params.zone"
  ]
}
Run Code Online (Sandbox Code Playgroud)