Elasticsearch中query_string查询的escape属性作用是什么?
Elasticsearch query_string escape 属性说明
核心作用
escape参数用于控制查询解析阶段是否对查询字符串中的ES保留特殊字符自动执行转义操作,ES保留的特殊字符包括+、-、=、&&、||、>、<、!、(、)、{、}、[、]、^、"、~、*、?、:、\、/。
对应你场景的行为差异
你的查询语句中query值为*Serial\+*,其中+属于ES保留特殊字符,两种参数值的表现如下:
- 当
escape: true时:
ES会自动对查询字符串里的特殊字符做转义处理,你写的\+会被正确识别为要查询的字面量+字符,配合allow_leading_wildcard: true和analyze_wildcard: true的配置,即可匹配到info.name字段中包含Serial+内容的文档,所以能正常返回符合条件的结果。 - 当
escape: false时:
ES不会执行特殊字符的自动转义逻辑,此时查询字符串中的+会被识别为query_string语法里的必须匹配操作符,而非普通查询字符,你的查询语句会被解析为异常的逻辑规则,无法匹配任何文档,因此返回结果为0。
使用建议
如果你的查询内容本身包含大量ES保留特殊字符,建议开启escape: true,既可以避免查询语法解析异常,也能减少手动转义特殊字符的工作量。
内容的提问来源于stack exchange,提问作者saba safavi
相关产品推荐
相关产品推荐

