elasticsearch Elasticsearch无法解析查询无法解析';或';
我正在尝试从索引中搜索文档中的“或”。elasticsearch Elasticsearch无法解析查询无法解析';或';,elasticsearch,elasticsearch,我正在尝试从索引中搜索文档中的“或”。 这是我键入的查询 GET index_name/_search { "query": { "bool": { "filter": [ { "query_string": { "query": "OR word1", "fi
这是我键入的查询
GET index_name/_search
{
"query": {
"bool": {
"filter": [
{
"query_string": {
"query": "OR word1",
"fields": [
"field1"
]
}
}
]
}
}
}
我得到以下错误
{
"error": {
"root_cause": [
{
"type": "query_shard_exception",
"reason": "Failed to parse query [OR word1]",
"index_uuid": "Brju2MNeQ5m7sI02Q2Y4gw",
"index": "index_name"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "index_name",
"node": "C5Suw-gaR7eehoH0WNGw1A",
"reason": {
"type": "query_shard_exception",
"reason": "Failed to parse query [OR word1]",
"index_uuid": "Brju2MNeQ5m7sI02Q2Y4gw",
"index": "index_name",
"caused_by": {
"type": "parse_exception",
"reason": "Cannot parse 'OR word1': Encountered \" <OR> \"OR \"\" at line 1, column 0.\nWas expecting one of:\n <NOT> ...\n \"+\" ...\n \"-\" ...\n <BAREOPER> ...\n \"(\" ...\n \"*\" ...\n <QUOTED> ...\n <TERM> ...\n <PREFIXTERM> ...\n <WILDTERM> ...\n <REGEXPTERM> ...\n \"[\" ...\n \"{\" ...\n <NUMBER> ...\n <TERM> ...\n ",
"caused_by": {
"type": "parse_exception",
"reason": "Encountered \" <OR> \"OR \"\" at line 1, column 0.\nWas expecting one of:\n <NOT> ...\n \"+\" ...\n \"-\" ...\n <BAREOPER> ...\n \"(\" ...\n \"*\" ...\n <QUOTED> ...\n <TERM> ...\n <PREFIXTERM> ...\n <WILDTERM> ...\n <REGEXPTERM> ...\n \"[\" ...\n \"{\" ...\n <NUMBER> ...\n <TERM> ...\n "
}
}
}
}
]
},
"status": 400
}
{
“错误”:{
“根本原因”:[
{
“类型”:“查询切分异常”,
“原因”:“未能分析查询[或单词1]”,
“索引”:“Brju2MNeQ5m7sI02Q2Y4gw”,
“索引”:“索引名称”
}
],
“类型”:“搜索\阶段\执行\异常”,
“原因”:“所有碎片均失败”,
“阶段”:“查询”,
“分组”:正确,
“失败的\u碎片”:[
{
“碎片”:0,
“索引”:“索引名称”,
“节点”:“C5Suw-gaR7eehoH0WNGw1A”,
“理由”:{
“类型”:“查询切分异常”,
“原因”:“未能分析查询[或单词1]”,
“索引”:“Brju2MNeQ5m7sI02Q2Y4gw”,
“索引”:“索引名称”,
“原因”:{
“类型”:“解析异常”,
“原因”:“无法解析”或“字词1”:在第1行第0列遇到\“\”或\“\”。\n应为:\n…\n \“+\”…\n \“-\”…\n…\n\”(\“…”\n…\n…\n…\n…\n…\n…\n…\n \“[\”..\n \“{\”..\n…\n…\n”,
“原因”:{
“类型”:“解析异常”,
“原因”:“在第1行第0列遇到\“\”或\“\”。\n应为:\n…\n \“+\”..\n \“-\”..\n…\n\”(\”..\n…\n…\n…\n…\n…\n \“[\”..\n \“{\”..\n…\n…\n”
}
}
}
}
]
},
“地位”:400
}
为什么这是一个错误?克服这个错误的正确方法是什么?如果我从查询中删除“或”这个词,它可以正常工作,但是当我保留它时,它会给我这个错误如果我很好地理解了你的问题,我创建了一个索引,并接收了两个文档。我尝试使用
转义字符=\
以下是我摄取的数据:
“字段1”:“单词1”
“字段1”:“或单词1”
然后,我对您的查询做了一个小修改:
{
"query": {
"bool": {
"filter": [
{
"query_string": {
"query": "word1 \\OR",
"fields": ["field1"]
}
}
]
}
}
}
答复是:
"hits" : [
{
"_index" : "or-doc",
"_type" : "_doc",
"_id" : "9mCioHQBowpsxTkF3Jdx",
"_score" : 0.0,
"_source" : {
"field1" : "word1"
}
},
{
"_index" : "or-doc",
"_type" : "_doc",
"_id" : "82CjoHQBowpsxTkFCZgE",
"_score" : 0.0,
"_source" : {
"field1" : "OR word1"
}
}
]
注意:我转义了或
,因为它被视为保留字
如果你有任何问题,我很乐意帮助你
链接:不建议使用查询字符串,如以下中所述:
因为对于任何无效的语法,它都会返回一个错误,所以我们不建议这样做
使用查询字符串查询搜索框
如果不需要支持查询语法,请考虑使用匹配
如果需要查询语法的功能,请使用
简单的\u查询\u字符串查询,不太严格
搜索查询:
{
"query": {
"match": {
"title": {
"query": "OR"
}
}
}
}
"hits": [
{
"_index": "stof_63952836",
"_type": "_doc",
"_id": "2",
"_score": 0.43445712,
"_source": {
"title": "OR word1"
}
}
]
搜索结果:
{
"query": {
"match": {
"title": {
"query": "OR"
}
}
}
}
"hits": [
{
"_index": "stof_63952836",
"_type": "_doc",
"_id": "2",
"_score": 0.43445712,
"_source": {
"title": "OR word1"
}
}
]