格式错误的查询,预计 "END_OBJECT" 但发现 "FIELD_NAME"

malformed query, expected "END_OBJECT" but found "FIELD_NAME"

您好,在 Kibana 控制台中 运行 一个术语查询时,我得到一个 parsing_exception

查询

GET /products/_search
{
  "query": {
    "terms": {
      "tags.keyword": [ "Soup", "Cake" ]
    },
    "range": {
      "in_stock": {
        "gte": 10,
        "lte": 20
      }
    }
  }
}

Response/Exception

{
  "error" : {
    "root_cause" : [
      {
        "type" : "parsing_exception",
        "reason" : "[terms] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
        "line" : 6,
        "col" : 5
      }
    ],
    "type" : "parsing_exception",
    "reason" : "[terms] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
    "line" : 6,
    "col" : 5
  },
  "status" : 400
}

谁能告诉我为什么会出现这个异常以及如何解决它?

您需要使用boolean query来组合术语和范围查询。修改您的搜索查询,如下所示 -

{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "tags.keyword": [
              "Soup",
              "Cake"
            ]
          }
        },
        {
          "range": {
            "in_stock": {
              "gte": 10,
              "lte": 20
            }
          }
        }
      ]
    }
  }
}