我在请求文件在带空格的字段上发出请求时遇到了麻烦。映射看起来像这样:
"myIndexName": {
"mappings": {
"myType": {
"properties": {
"myPropertyWithSpaces": {
"type": "string",
"analyzer": "analyzer_keyword"
}
}
}
}
}
有" analyzer_keyword"是带有关键字标记器和小写过滤器的cutom分析器。 当我发送" _analyze"请求" analyzer_keyword"分析器和查询类似" firstWord secondWord"我只得到令牌" firstword secondword" - 一切都按预期工作。但是,如果我不将空格字符更改为"?"则查询字符串请求不返回任何内容。通配符;有趣的是,如果我告诉elasticsearch使用这个" analyzer_keyword"那么小写仍然有效并且这种行为不会改变。明确。
"query": {
"query_string": {
"query": "firstWord secondWord",
"default_field": "myPropertyWithSpaces",
"analyzer": "analyzer_keyword"
}
答案 0 :(得分:7)
在简单的转义空格字符中找到解决方案为“\”。正确工作并防止queryString处理器注入任何“AND OR”运算符或其他任何内容。