规范化器参数(Normalizer)

Normalizer 参数 #

normalizer 参数用于 keyword 字段,在索引和查询之前对值进行标准化处理(如转换为小写)。与 analyzer 不同,normalizer 不会对字符串进行分词,只做字符级别的变换。

完整指南归一化与规范化器,包含概念介绍、自定义配置、兼容过滤器列表和最佳实践。

参数选项 #

说明
null不使用 normalizer,值按原样索引。默认值
自定义名称使用在索引 settings 中定义的 normalizer。

使用示例 #

keyword 字段默认区分大小写。使用内置的 lowercase normalizer 可忽略大小写:

"status": {
  "type": "keyword",
  "normalizer": "lowercase"
}

或自定义 normalizer:

PUT my-index
{
  "settings": {
    "analysis": {
      "normalizer": {
        "lowercase_normalizer": {
          "type": "custom",
          "filter": ["lowercase"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "status": {
        "type": "keyword",
        "normalizer": "lowercase_normalizer"
      }
    }
  }
}

写入 "OK" 后,使用 "ok" 可以查到,因为两者在索引时都被标准化为 "ok"

注意事项 #

  • normalizer 同时影响索引时查询时,确保两端一致
  • 聚合和排序使用的也是标准化后的值
  • 如果只需要查询时忽略大小写而保留原始值用于展示,可以使用多字段:一个带 normalizer,一个不带

相关参考 #