无法使用 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 的字符串格式错误。
请检查格式。
我正在使用 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 的字符串格式错误。 请检查格式。