规范化器(Normalizers)

规范化器(Normalizers) #

相关指南 #

概念指南 → 理解归一化原理,请阅读 归一化与规范化器


概述 #

Normalizer 类似于分析器,但有一个关键区别:它只输出单个词元。它没有分词器,只能使用字符级别的过滤器(如大小写转换、ASCII 折叠),不支持分词、同义词或词干提取等操作。

Normalizer 专用于 keyword 字段类型,在索引和查询之前对整个字段值进行字符级归一化。

Normalizer vs Analyzer #

特性AnalyzerNormalizer
输出词元数多个1 个
包含分词器
适用字段类型textkeyword
支持同义词/词干
支持大小写转换
支持字符归一化

规范化器列表 #

规范化器说明
lowercase内置规范化器,将整个值转为小写
自定义规范化器组合字符过滤器和词元过滤器构建自定义归一化逻辑

兼容的过滤器 #

Normalizer 只接受字符级操作的过滤器,不支持会改变词元数量的过滤器。

字符过滤器 #

过滤器说明
mapping字符映射替换
pattern_replace正则表达式替换

词元过滤器 #

过滤器说明
lowercase转小写
uppercase转大写
asciifoldingASCII 折叠(移除变音符号)
decimal_digitUnicode 数字 → ASCII 数字
cjk_width全角/半角字符归一化
trim去除首尾空白
elision移除省音(如法语 l', d')
arabic_normalization阿拉伯语字符归一化
bengali_normalization孟加拉语字符归一化
german_normalization德语 ä→a, ß→ss
hindi_normalization印地语字符归一化
indic_normalization印度语系通用归一化
persian_normalization波斯语字符归一化
sorani_normalization索拉尼语字符归一化
scandinavian_folding斯堪的纳维亚字符折叠
scandinavian_normalization斯堪的纳维亚字符归一化
serbian_normalization塞尔维亚语字符归一化

注意事项 #

  1. 对聚合生效:使用 normalizer 的 keyword 字段在 terms 聚合中返回归一化后的值
  2. 对排序生效:排序时也使用归一化后的值
  3. 不可逆:归一化后原始值仅保存在 _source 中,keyword 字段本身存储归一化后的形式
  4. 每个字段一个:每个 keyword 字段只能绑定一个 normalizer
  5. 同时影响索引和查询:normalizer 在索引时和查询时都会执行,确保一致性