当前位置: 首页 >  互联网技术 >  elasticsearch 实现查询忽略大小写

elasticsearch 实现查询忽略大小写

导读:背景:在搜索的时候经常会有一种场景就是忽略大小写,不管你输入的是全大写还是全小写还是大小写混合,希望都能够搜索出结果。.解决思路:Elasticsearch中的lowercase.normalizer将文本转换为小写,并将其作为规范形式存储在索引中。这可以确保在搜索和比较文本时忽

背景:在搜索的时候经常会有一种场景就是忽略大小写,不管你输入的是全大写还是全小写还是大小写混合,希望都能够搜索出结果。

解决思路: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"
      }
    }

}

举个例子:

新建一个索引:

PUT /lowercase_normalizer_index
{
    "mappings" : {
      "properties" : {
        "id" : {
          "type" : "keyword"
        }
      }
    }
}

新增字段 设置属性

POST lowercase_normalizer_index/_close
PUT /lowercase_normalizer_index/_settings
{
  "index":{
    "analysis":{
      "normalizer":{
        "lowercase_normalizer":{
          "type": "custom",
          "char_filter": [],
           "filter": ["lowercase"]
        }
      }
    }
  }
}
POST lowercase_normalizer_index/_open

PUT /lowercase_normalizer_index/_mapping
{
    "properties" : {
      "name" : {
        "type" : "keyword",
        "normalizer":"lowercase_normalizer"
      }
    }
}

插入一些数据

PUT lowercase_normalizer_index/_doc/1
{
  "id": "1",
  "name": "Mohammed Ahmed"
}


PUT lowercase_normalizer_index/_doc/2
{
"id": "2",
"name": "Sophie Martin"
}


PUT lowercase_normalizer_index/_doc/3
{
  "id": "3",
  "name": "mohammed ahmed"
}

验证

GET lowercase_normalizer_index/_search
{
  "query": {
    "wildcard": {
      "name": {
        "value": "*moham*"
      }
    }
  }
}

结果

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "lowercase_normalizer_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "id" : "1",
          "name" : "Mohammed Ahmed"
        }
      },
      {
        "_index" : "lowercase_normalizer_index",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 1.0,
        "_source" : {
          "id" : "3",
          "name" : "mohammed ahmed"
        }
      }
    ]
  }
}
内容
  • 【LeetCode二叉树#17】在二叉搜索树中插入或删除某个值(涉及重构二叉树、链表基础、以及内存泄漏问题)
    【LeetCode二叉树#17】
    2023-12-02
    二叉搜索树中的插入操作.力扣题目链接(opens new window).给定二叉搜索树(BST)的根节点和要插入树中的
  • 智能智能文化设备
    智能智能文化设备
    2023-10-04
    智能智能文化设备.产品介绍.智能智能文化设备是一款结合了智能科技和传统文化的产品,旨在帮助用户更好地了解和体验传统文化。
  • 云计算解决方案
    云计算解决方案
    2023-10-01
    云计算解决方案.产品功能.弹性扩展:根据用户的需求动态扩展计算和存储资源,确保应用在任何时候都有足够的资源支持。.高可用
  • 智能家居设备
    智能家居设备
    2023-10-01
    智能家居设备介绍.产品功能.智能家居设备是一款结合了智能科技和家居生活的创新产品。它利用先进的技术和智能系*,为用户提供
  • 智能车载设备
    智能车载设备
    2023-10-02
    智能车载设备.我们的智能车载设备是一款结合了最新科技和创新设计的汽车配件,旨在提升驾驶体验、提高安全性和为用户带来智能化
  • 智能智能餐饮设备
    智能智能餐饮设备
    2023-10-05
    产品功能介绍.智能餐饮设备概述.我们的智能餐饮设备是一款集合了智能化技术和餐饮服务的创新产品。通过智能化设备,顾客可以方
  • 智能智能照明设备
    智能智能照明设备
    2023-10-03
    产品介绍.智能智能照明设备是一款基于人工智能技术的智能家居产品,旨在为用户提供更智能、更便捷的家居照明体验。通过智能科技
  • 智能智能餐饮设备
    智能智能餐饮设备
    2023-10-05
    智能餐饮设备.智能餐饮设备是一款融合了智能科技的餐饮设备,旨在提升餐饮行业的效率和用户体验。该产品利用最先进的智能技术,
  • 智能智能金融设备
    智能智能金融设备
    2023-10-04
    智能金融设备.产品简介.智能金融设备是一种融合了金融科技和智能技术的创新产品,旨在为金融机构提供智能化、便捷化的服务。通
  • *****与保养服务
    *****与保养服务
    2023-10-02
    *****与保养服务.产品介绍.我们的服务器维护与保养服务是为了帮助企业解决***运行过程中出现的各种问题,确保服务器的
  • 智能手机
    智能手机
    2023-10-01
    产品功能介绍:智能手机.智能手机是一款集通讯、娱乐、办公等功能于一体的移动智能设备。首先,智能手机具有强大的通讯功能,支