我可能没有正确理解这一点,但是当使用查询字符串查询搜索我的索引时,它会声明需要转义保留字符或特殊字符。
所保留的字符为:+-=&~-><!(){}^“**?:\/
如果不能正确转义这些特殊字符,可能会导致语法错误,从而阻止查询的运行。“
目前,我的索引没有标记特殊字符,因为我只使用标准分析器,但我确实在所有字符串字段上都进行了分析和分析。
因此,如果我将这些字符串编入索引:
quick fox
brown fox
当我运行查询时:
{
"query_string" : {
"query" : "(quick OR brown) AND fox",
}
}
正确的结果回来了。但是,根据保留字符文档,是否应该在查询字符串查询中转义带有括号"(“和")”的查询?我有点不明白什么时候该转义保留的字符,什么时候不在查询中?
需要吗?:
{
"query_string" : {
"query" : "\(quick OR brown\) AND fox",
}
}
我知道圆括号是用来分组的,所以不转义是有道理的。但是,在Elasticsearch的查询中,总是需要转义哪些保留字符?只有当保留字符是运算符时?
发布于 2016-04-07 05:39:26
只有当保留字符不是查询语法的一部分时,才需要转义。
所以在(quick OR brown) AND fox
,你不能逃避任何事情。
但是,如果您的字段包含要搜索的保留字符,例如您的字段包含Hello!
,而!
是一个与NOT
等效的保留字符,并且您希望搜索Hello!
,那么您的查询需要如下所示
`Hello\! AND blabla`
^^
||
escaped reserved char
https://stackoverflow.com/questions/36467500
复制相似问题