规范化器
规范化器(Normalizer)与分析器类似,但只能输出单个词元。因此,它们没有分词器,并且只接受一部分可用的字符过滤器和词元过滤器。只允许使用按字符逐个处理的过滤器。例如,允许使用小写化过滤器,但不允许使用词干提取过滤器,因为后者需要将关键词作为一个整体来处理。
当前可在规范化器定义中使用的过滤器列表如下:
arabic_normalizationasciifoldingbengali_normalizationcjk_widthdecimal_digitelisiongerman_normalizationhindi_normalizationindic_normalizationlowercasepattern_replacepersian_normalizationscandinavian_foldingserbian_normalizationsorani_normalizationtrimuppercase
Elasticsearch 自带一个 lowercase 内置规范化器。对于其他形式的规范化,需要进行自定义配置。
自定义规范化器
自定义规范化器接受一个字符过滤器列表和一个词元过滤器列表。
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"
}
}
}
}