首页 文章

查询弹力的空格麻烦

提问于
浏览
8

我在请求文件在带空格的字段上发出请求时遇到了麻烦 . 映射看起来像这样:

"myIndexName": {
    "mappings": {
        "myType": {
            "properties": {
                "myPropertyWithSpaces": {
                    "type": "string",
                    "analyzer": "analyzer_keyword"
                }
            }
        }
    }
}

“analyzer_keyword”是带有关键字标记器和小写过滤器的cutom分析器 . 当我用“analyzer_keyword”分析器发送“_analyze”请求并查询“firstWord secondWord”时,我只得到令牌“firstword secondword” - 一切都按预期工作 . 但是,如果我不将空格字符更改为“?”,则查询字符串请求不返回任何内容通配符;有趣的是,如果我告诉elasticsearch明确地使用这个“analyzer_keyword”,那么小写仍然有效并且这种行为不会改变 .

"query": {
"query_string": {
    "query": "firstWord secondWord",
    "default_field": "myPropertyWithSpaces",
    "analyzer": "analyzer_keyword"
}

1 回答

  • 6

    在简单的转义空格字符中找到解决方案为“\” . 正常工作,并防止queryString处理器注入任何“AND OR”运算符或其他 .

相关问题