无法使用 Elastic Search API 解析查询

Failed to parse query using Elastic Search API

我正在使用 POST /_search API 在 elastic search 5.6.0 中搜索数据。

当我尝试搜索查询 Android 8.0 (Oreo) 时,搜索 API 成功运行,但是当我尝试 Android 8.0 (Oreo 弹性搜索失败,错误 无法解析查询 [Android 8.0 (Oreo]
请查看以下错误:

{
  "shard":0,
  "index":"my_index",
  "node":"-Dzw5527SZGf7U0Ebut0PQ",
  "reason":{
    "type":"query_shard_exception",
    "reason":"Failed to parse query [Android 8.0 (Oreo]",
    "index_uuid":"wo7ihAX8Syy15MSDrS-Wsw",
    "index":"my_index",
    "caused_by":{
      "type":"parse_exception",
      "reason":"Cannot parse 'Android 8.0 (Oreo': Encountered \"<EOF>\" at line 1, column 17.\r\nWas expecting one of:\r\n    <AND> ...\r\n    <OR> ...\r\n    <NOT> ...\r\n    \"+\" ...\r\n    \"-\" ...\r\n    <BAREOPER> ...\r\n    \"(\" ...\r\n    \")\" ...\r\n    \"*\" ...\r\n    \"^\" ...\r\n    <QUOTED> ...\r\n    <TERM> ...\r\n    <FUZZY_SLOP> ...\r\n    <PREFIXTERM> ...\r\n    <WILDTERM> ...\r\n    <REGEXPTERM> ...\r\n    \"[\" ...\r\n    \"{\" ...\r\n    <NUMBER> ...\r\n    ",
      "caused_by":{
        "type":"parse_exception",
        "reason":"Encountered \"<EOF>\" at line 1, column 17.\r\nWas expecting one of:\r\n    <AND> ...\r\n    <OR> ...\r\n    <NOT> ...\r\n    \"+\" ...\r\n    \"-\" ...\r\n    <BAREOPER> ...\r\n    \"(\" ...\r\n    \")\" ...\r\n    \"*\" ...\r\n    \"^\" ...\r\n    <QUOTED> ...\r\n    <TERM> ...\r\n    <FUZZY_SLOP> ...\r\n    <PREFIXTERM> ...\r\n    <WILDTERM> ...\r\n    <REGEXPTERM> ...\r\n    \"[\" ...\r\n    \"{\" ...\r\n    <NUMBER> ...\r\n    "
      }
    }
  }
}

以下查询对我有用:

{
  "query":{
    "bool":{
      "must":[
        {
          "query_string":{
            "query":"Android 8.0 (Oreo)",
            "default_operator":"AND"
          }
        }
      ]
    }
  }
}

以下查询抛出异常:

{
  "query":{
    "bool":{
      "must":[
        {
          "query_string":{
            "query":"Android 8.0 (Oreo",
            "default_operator":"AND"
          }
        }
      ]
    }
  }
}

你能帮我解决这个问题吗,为什么我在查询中错过 ) 时会收到错误消息?

括号是一个reserved character in the query string syntax,所以你需要这样转义

{
  "query":{
    "bool":{
      "must":[
        {
          "query_string":{
            "query":"Android 8.0 \(Oreo",
            "default_operator":"AND"
          }
        }
      ]
    }
  }
}

我也遇到了同样的问题。 我传递给 Postman 的字符串格式错误。 请检查格式。