我的问题很简单,我不能在搜索查询中使用@。最后,我发现可以使用反斜杠转义特殊字符。
GET index/_search
{
"size": 20,
"query": {
"query_string": {
"query": "@as",
"analyzer": "keyword"
}
}
}
但是当我尝试这样做时,我得到了以下错误Unrecognized character escape '@' (code 64)n at
。当我尝试不带@符号时,我得到了没有@符号的结果,比如
- 一如既往的错过
- 。GUI 如果
- 等等......有谁能建议我如何才能实现以前的查询可以按照我的期望执行吗?
我使用
- Elasticsearch 2.4.1 Ubuntu 14.04
- Kibana 4.6.1
出现错误是因为不需要转义'@'字符。
"query": "@as"
应该可以工作。
您也应该检查您的映射,如果您的字段没有标记为not_analyzed
(或没有keyword
分析器),您将看不到任何搜索结果-标准分析器在索引文档时删除'@'等字符。
更新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"
}
}
}