My question is simple, I can't use @ in the search query. Finally, I found that I can escape the special characters using the backslash.
GET index/_search
{
"size": 20,
"query": {
"query_string": {
"query": "\@as",
"analyzer": "keyword"
}
}
}
But when I try to do that I got the following error Unrecognized character escape '@' (code 64)\n at
. And when I try without @ symbol i got the results without @ symbol like
I am using
You get the error because there is no need to escape the '@' character.
"query": "@as"
should work.
You should check your mappings as well, if your fields are not marked as not_analyzed
(or don't have keyword
analyzer) you won't see any search results - standard analyzer removes characters like '@' when indexing a document.
UPDATE
query_string
uses _all
field by default, so you have to configure this field in the way similar to this example:
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"
}
}
}