我无法在字符结尾/以特殊字符开头的Elasticsearch中进行搜索.比如"123456!"
{ "query": { "query_string": { "default_field": "password", "query": "123456!" } } }
我的映射是
{ "mappings": { "passwords": { "properties": { "date": { "type": "date"}, "password": { "type": "string","index": "not_analyzed"}, } } } }
它给了我错误,我可以在我的搜索查询(或映射)中做什么,以便特殊字符将被视为搜索字符串的一部分?
由于你的password
领域是not_analyzed
(好!),尝试123456!
用双引号进行精确匹配:
{ "query": { "query_string": { "default_field": "password", "query": "\"123456!\"" } } }
另一种方法是keyword
在query_string
查询中设置分析器(但请确保转义,!
因为它是一个保留字符(对于NOT
运算符)
{ "query": { "query_string": { "default_field": "password", "query": "123456\!", "analyzer": "keyword" } } }