我可能无法理解这一点,但在使用查询字符串查询搜索我的索引时,它指出需要转义保留字符或特殊字符。
保留字符为:+ - =&& || > < ! (){} [] ^“〜*?:\ /
无法正确转义这些特殊字符可能会导致语法错误,导致查询无法运行。“
目前我的索引没有对特殊字符进行标记,因为我只使用标准分析器,但我确实对所有字符串字段进行了分析和分析。
所以,如果我将这些字符串编入索引:
quick fox
brown fox
当我运行查询时:
{
"query_string" : {
"query" : "(quick OR brown) AND fox",
}
}
正确的结果回来了。但是基于保留字符文档,是否需要在查询字符串查询中转义带括号“(”和“)”的查询?我有点困惑什么时候逃避保留字符和什么时候不在查询中?
是否需要?:
{
"query_string" : {
"query" : "\(quick OR brown\) AND fox",
}
}
我知道括号用于分组,所以不要逃避它们是有意义的。但是在Elasticsearch的查询中总是需要转义哪些保留字符?只有保留字符是运算符?
答案 0 :(得分:2)
如果保留字符不属于查询语法,则只需对其进行转义。
所以在(quick OR brown) AND fox
你不能逃避任何事情。
但是,例如,如果您的字段包含您要搜索的保留字符,例如您的字段包含Hello!
,!
是一个等同于NOT
的保留字符,您想要搜索Hello!
,那么您的查询必须像这样
`Hello\! AND blabla`
^^
||
escaped reserved char