elasticsearch 实现查询忽略大小写
背景:在搜索的时候经常会有一种场景就是忽略大小写,不管你输入的是全大写还是全小写还是大小写混合,希望都能够搜索出结果。
解决思路:Elasticsearch中的lowercase normalizer将文本转换为小写,并将其作为规范形式存储在索引中。这可以确保在搜索和比较文本时忽略大写字母的差异,从而提高搜索的准确性和一致性
实现方案:
开发过程中,经常会遇到索引是之前已经建好的,由于es的规则,只能新增字段,不能删除或者修改已经存在的字段,可以动态更新原有索引的setting,动态更新setting,需要先关闭索引,执行玩更新操作以后,再开启索引,步骤如下:
index_name是 索引名称
field_name是字段名称
POST index_name/_close PUT /index_name/_settings { "index":{ "analysis":{ "normalizer":{ "lowercase_normalizer":{ "type": "custom", "char_filter": [], "filter": ["lowercase"] } } } } } POST index_name/_open PUT /index_name/_mapping { "properties" : { "field_name" : { "type" : "keyword", "normalizer":"lowercase_normalizer" } } }