是否需要在 Elasticsearch 查询中转义保留字符?
Do reserved characters need to be escaped in an Elasticsearch query?
我可能没有正确理解这一点,但是当使用查询字符串查询来搜索我的索引时,它指出需要转义保留字符或特殊字符。
The reserved characters are: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
未能正确转义这些特殊字符可能会导致语法错误,从而阻止您的查询 运行ning。"
目前我的索引没有标记特殊字符,因为我只使用标准分析器,但我确实对所有字符串字段进行了分析和未分析。
因此,如果我将这些字符串编入索引:
quick fox
brown fox
当我运行一个查询:
{
"query_string" : {
"query" : "(quick OR brown) AND fox",
}
}
返回正确的结果。但是根据保留字符文档,是否需要在查询字符串查询中转义带有括号“(”和“)”的查询?我对何时转义保留字符以及何时不在查询中感到有点困惑?
有必要吗?:
{
"query_string" : {
"query" : "\(quick OR brown\) AND fox",
}
}
我知道括号是用来分组的,所以不转义它们是有意义的。但是在Elasticsearch的查询中,哪些保留字符总是需要转义的呢?仅当保留字符为运算符时?
仅当保留字符不是查询语法的一部分时才需要对其进行转义。
所以在 (quick OR brown) AND fox
中你不会逃避任何东西。
但是,例如,如果您的字段包含您要搜索的保留字符,例如您的字段包含 Hello!
并且 !
是等同于 NOT
的保留字符,并且您想搜索 Hello!
,那么您的查询需要像这样
`Hello\! AND blabla`
^^
||
escaped reserved char
我可能没有正确理解这一点,但是当使用查询字符串查询来搜索我的索引时,它指出需要转义保留字符或特殊字符。
The reserved characters are: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
未能正确转义这些特殊字符可能会导致语法错误,从而阻止您的查询 运行ning。"
目前我的索引没有标记特殊字符,因为我只使用标准分析器,但我确实对所有字符串字段进行了分析和未分析。
因此,如果我将这些字符串编入索引:
quick fox
brown fox
当我运行一个查询:
{
"query_string" : {
"query" : "(quick OR brown) AND fox",
}
}
返回正确的结果。但是根据保留字符文档,是否需要在查询字符串查询中转义带有括号“(”和“)”的查询?我对何时转义保留字符以及何时不在查询中感到有点困惑?
有必要吗?:
{
"query_string" : {
"query" : "\(quick OR brown\) AND fox",
}
}
我知道括号是用来分组的,所以不转义它们是有意义的。但是在Elasticsearch的查询中,哪些保留字符总是需要转义的呢?仅当保留字符为运算符时?
仅当保留字符不是查询语法的一部分时才需要对其进行转义。
所以在 (quick OR brown) AND fox
中你不会逃避任何东西。
但是,例如,如果您的字段包含您要搜索的保留字符,例如您的字段包含 Hello!
并且 !
是等同于 NOT
的保留字符,并且您想搜索 Hello!
,那么您的查询需要像这样
`Hello\! AND blabla`
^^
||
escaped reserved char