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"
      }
    }

}

 

热门相关:超武穿梭   第一神算:纨绔大小姐   薄先生,情不由己   重生之至尊千金   夫人,你马甲又掉了!