首页 > 解决方案 > elasticsearch中query_string中的转义属性是什么

问题描述

我在 elasticsearch 的 query_string 中使用通配符时遇到问题。当值为“true”时,我无法在 query_string 中找到“escape”属性的文档,但当它为“false”时,结果为零。

{
                    "query_string": {
                        "query": "*Serial\\+*",
                        "fields": [
                            "info.name^1.0"
                        ],
                        "type": "best_fields",
                        "allow_leading_wildcard": true,
                        "analyze_wildcard": true,
                        "escape": true,
                        "auto_generate_synonyms_phrase_query": true,
                        "fuzzy_transpositions": true,
                        "boost": 1.0
                    }
                }

任何人都可以解释“逃生”属性吗?

标签: elasticsearchquery-stringelasticsearch-7

解决方案


奇怪的是它没有记录,但查看源代码我们可以看到:

es查询字符串源码

如果“escape”为“true”,代码调用 org.apache.lucene.queryparser.classic.QueryParser.escape

在查询字符串中,函数本身记录为

返回一个字符串,其中 QueryParser 期望转义的那些字符由前面的 \ 转义。

所以看起来这个标志只是用来为你自动转义字符,所以你不必手动转义它们


推荐阅读