我的问题很简单,我无法在搜索查询中使用@。最后,我发现我可以使用反斜杠转义特殊字符。
GET index/_search
{
"size": 20,
"query": {
"query_string": {
"query": "\@as",
"analyzer": "keyword"
}
}
}
但是当我尝试这样做时,我收到以下错误Unrecognized character escape '@' (code 64)\n at
。当我尝试没有@符号时,我得到的结果没有@符号,如
我正在使用
答案 0 :(得分:0)
您收到错误,因为无需转义'@'字符。
"query": "@as"
应该有用
您也应检查映射,如果您的字段未标记为not_analyzed
(或者没有keyword
分析器),您将看不到任何搜索结果 - 标准分析器会删除“@”等字符索引文档时。
UPDATE
query_string
默认情况下使用_all
字段,因此您必须按照与此示例类似的方式配置此字段:
PUT index
{
"mappings":{
"book":{
"_all":{
"type":"string",
"index":"analyzed",
"analyzer":"whitespace"
},
"properties":{
"name":{
"type":"string",
"index":"not_analyzed"
}
}
}
}
}
PUT /index/book/1
{
"name" : "@foo bar"
}
GET index/_search
{
"size": 20,
"query": {
"query_string": {
"query": "@foo",
"analyzer": "keyword"
}
}
}