首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否需要在Elasticsearch查询中转义保留字符?

是否需要在Elasticsearch查询中转义保留字符?
EN

Stack Overflow用户
提问于 2016-04-07 05:34:54
回答 1查看 13.2K关注 0票数 3

我可能没有正确理解这一点,但是当使用查询字符串查询搜索我的索引时,它会声明需要转义保留字符或特殊字符。

characters

所保留的字符为:+-=&~-><!(){}^“**?:\/

如果不能正确转义这些特殊字符,可能会导致语法错误,从而阻止查询的运行。“

目前,我的索引没有标记特殊字符,因为我只使用标准分析器,但我确实在所有字符串字段上都进行了分析和分析。

因此,如果我将这些字符串编入索引:

代码语言:javascript
复制
quick fox
brown fox

当我运行查询时:

代码语言:javascript
复制
{
    "query_string" : {
        "query" : "(quick OR brown) AND fox",
    }
}

正确的结果回来了。但是,根据保留字符文档,是否应该在查询字符串查询中转义带有括号"(“和")”的查询?我有点不明白什么时候该转义保留的字符,什么时候不在查询中?

需要吗?:

代码语言:javascript
复制
{
    "query_string" : {
        "query" : "\(quick OR brown\) AND fox",
    }
}

我知道圆括号是用来分组的,所以不转义是有道理的。但是,在Elasticsearch的查询中,总是需要转义哪些保留字符?只有当保留字符是运算符时?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-07 05:39:26

只有当保留字符不是查询语法的一部分时,才需要转义。

所以在(quick OR brown) AND fox,你不能逃避任何事情。

但是,如果您的字段包含要搜索的保留字符,例如您的字段包含Hello!,而!是一个与NOT等效的保留字符,并且您希望搜索Hello!,那么您的查询需要如下所示

代码语言:javascript
复制
`Hello\! AND blabla`
      ^^
      ||
escaped reserved char
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36467500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档