当前位置: 首页 > article >正文

Elasticsearch:normalizer

一、概述

‌Elastic normalizer‌是Elasticsearch中用于处理keyword类型字段的一种工具,主要用于对字段进行规范化处理,确保在索引和查询时保持一致性。

Normalizer与analyzer类似,都是对字段进行处理,但normalizer不会对字段进行分词,即没有tokenizer。它主要用于keyword类型的字段(不能再其他字段设置normalizer),可以在索引和查询时对字段值进行额外的处理,如转换为小写。例如,可以使用normalizer将字段值转换为小写,这在处理大小写不敏感的查询时非常有用‌。

二、normalizer的属性

normalizer仅仅有 char filters和token filters,具有的filter为:arabic_normalization, asciifolding, bengali_normalization, cjk_width, decimal_digit, elision, german_normalization, hindi_normalization, indic_normalization, lowercase, pattern_replace, persian_normalization, scandinavian_folding, serbian_normalization, sorani_normalization, trim, uppercase.
其中lowercase为Elasticsearch内置filter,其他的filter需要自定义配置。

自定义的chat filter和filter:

PUT index
{
  "settings": {
    "analysis": {
      "char_filter": {
        "quote": {
          "type": "mapping",
          "mappings": [
            "« => \"",
            "» => \""
          ]
        }
      },
      "normalizer": {
        "my_normalizer": {
          "type": "custom",
          "char_filter": ["quote"],
          "filter": ["lowercase", "asciifolding"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "foo": {
        "type": "keyword",
        "normalizer": "my_normalizer"
      }
    }
  }
}

三、验证只有keyword类型可以设置normalizer

创建如下mapping,并将类型为text的name字段设置上normalizer

PUT test_index
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "my_analyzer", 
        "fields": {
          "keyword": {
            "type": "keyword",
            "normalizer": "my_normalizer"
          }
        }
      },
      "title": {
        "type": "text",
        "analyzer": "standard",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      }
    }
  },
  "settings": {
    "analysis": {
      "normalizer": {
        "my_normalizer": {
          "filter": ["lowercase"],
          "char_filter": []
        }
      },
      "analyzer": {
        "my_analyzer": {
          "filter":  ["lowercase"],
          "tokenizer": "standard"
        }
      }
    }
  }
}

提示如下错误信息:
在这里插入图片描述


http://www.kler.cn/a/461613.html

相关文章:

  • 快速将一个项目的 `package.json` 中的所有模块更新到最新版本
  • SQL进阶技巧:如何计算相互连接的计算机组成的集合?
  • CSS2笔记
  • 【LeetCode: 100. 相同的树 + 二叉树 + 递归】
  • 112、Qt MSVC编译Qtxlsx
  • 【中间件】docker+kafka单节点部署---zookeeper模式
  • Java安全—SpringBootJWT身份权鉴打包部署
  • 地理数据库Telepg面试内容整理-如何在高并发情况下保证GIS服务的高可用性?
  • VMware安装Windows11虚拟机,图文详细,附免费资源,持续更新
  • 常用的linux命令介绍
  • 【视觉SLAM:六、视觉里程计Ⅰ:特征点法】
  • kioptrix靶场--level5
  • Android WorkManager使用介绍
  • ROS2+OpenCV综合应用--10. AprilTag标签码追踪
  • UE5 Debug的一些心得
  • 联通 路由器 创维SK-WR9551X 联通华盛VS010 组mesh 和 锐捷X32 PRO 无缝漫游
  • Spring Boot + MinIO 实现分段、断点续传,让文件传输更高效
  • RabbitMQ生产消息【交换机、路由键】与消费消息的简单使用
  • Javascript数据结构常见面试题目(全)
  • leetcode 3046. 分割数组 简单