es的normalizer

本文章是为了简单阐述es的多字段属性 7.x

PUT test
{
  "mappings": {
    "properties": {
      "mytest":{
        "type": "keyword",
        "fields": {
          "namess":{
            "type":"keyword",
            "normalizer":"test_normalizer"
          }
        }
      }
      
    }
  },
  "settings": {
    "analysis": {
      "normalizer":{
        "test_normalizer":{
          "type":"custom",
          "filter":[
            "lowercase"
            ]
        }
      }
    }
  }
}

这个PUT请求创建了一个名为test的索引,其中包括一个字段mytest,它是一个keyword类型的字段,并且有一个多字段namess,也是keyword类型,但使用了test_normalizer进行规范化。下面是请求的详细解释:

  1. 索引名称: test

    • 这个PUT请求是针对名为test的索引进行的。
  2. 映射(Mappings):

    • properties: 定义索引中字段的结构。
    • mytest: 主字段,类型为keyword,用于存储精确的、不分词的值。
    • mytest.fields.namess: 多字段,类型同样为keyword,但有额外的处理。它使用了 test_normalizer进行规范化,以实现不区分大小写的比较和搜索。
  3. 设置(Settings):

    • analysis: 定义索引的分析配置。
    • normalizer: 包含自定义的规范化器。
    • test_normalizer: 定义的规范化器,类型为custom,包含一个过滤器lowercase,它会将所有字符转换为小写。
    • 这个配置允许你在搜索mytest.namess时进行大小写不敏感的匹配,而mytest字段则保持原始输入,不受规范化影响。这在需要对特定字段进行大小写敏感和不敏感的搜索时非常有用。
PUT test/_doc/1
{
  "mytest":"apple"
}

PUT test/_doc/3
{
  "mytest":"Apple"
}
插入数据

在这里插入图片描述
这是已有的数据,当查询在这里插入图片描述
不进行区分大小写,在这里插入图片描述
当进行子字段时,进行不区分大小写查询。

由于改变了mapping,所以需要重新reindex迁移数据,详情请看下篇文章

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值