"reason":“[匹配] 格式错误的查询,预计 [END_OBJECT] 但发现 [FIELD_NAME]”

"reason" : "[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]"

GET my-index/_search
{
  "query": {
    
    "match": {
      "service.name": "myservice"
    },
  "exists": {"field": "metrics.notification.delayed"}}
}

当我执行上述查询时,我发现 “原因”:“[匹配] 格式错误的查询,预计 [END_OBJECT] 但发现 [FIELD_NAME]”. 基本上,我想要文档字段 "metrics.notification.delayed" 存在并且 field:value 匹配 "service.name": "myservice" 。谁能帮我解决这个问题??

由于您使用了多个查询,即 matchexists,您需要使用 boolean query 将它们组合起来,如下所示,

GET my-index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "service.name": "myservice"
          }
        },
        {
          "exists": {
            "field": "metrics.notification.delayed"
          }
        }
      ]
    }
  }
}