Elasticsearch实现英文区分大小写搜索
需求很简单,搜索时,有一个区分大小写的CheckBox,勾选则区分大小写,不勾选正常模糊搜索,或者其他搜索
首先搞清楚,ElasticSearch索引英文时默认索引时采用的分析器,会将全部字符转换为小写,所以采用默认分析器是无法实现区分大小写的。
最直接的方法就是自定义分词器,
{ "analysis": { "analyzer":{ "case_sensitive_analyzer":{ "tokenizer":"standard",
"filter":["stardard","stop"]
} } } }
上述分析器,实际上是将默认的标准分析器中的小写分词过滤器去掉。
这样以来又引入另外一个问题,如果正常的搜索又无法显示不区分区分大小写的模糊匹配,
可以再引入一个字段,定义为默认的分词器,然后,然后根据是否勾选区分大小写查询不同的的字段即可。
对于ElasticSearch分析器有疑问的可见:https://www.cnblogs.com/lishaojun/p/11027484.html