标准化器
normalizer
映射参数为关键字字段定义了自定义归一化过程。与为文本字段生成多个词元的分析器不同,归一化器使用一组词元过滤器将整个字段值转换为单个词元。当您定义归一化器时,关键字字段会先由指定的过滤器处理,然后存储,同时保持文档的 _source
不变。
定义归一化器
以下请求创建一个名为 products
的索引,其中包含一个名为 my_normalizer
的自定义归一化器。该归一化器应用于 code
字段,该字段使用 trim
和 lowercase
过滤器
PUT /products
{
"settings": {
"analysis": {
"normalizer": {
"my_normalizer": {
"type": "custom",
"filter": ["trim", "lowercase"]
}
}
}
},
"mappings": {
"properties": {
"code": {
"type": "keyword",
"normalizer": "my_normalizer"
}
}
}
}
当您将文档摄入到索引中时,code
字段通过去除多余空格并转换为小写来归一化
PUT /products/_doc/1
{
"code": " ABC-123 EXTRA "
}
在查询中使用小写和修剪过的文本搜索索引文档
POST /products/_search
{
"query": {
"term": {
"code": "abc-123 extra"
}
}
}
由于 code
字段经过归一化,term
查询成功匹配到存储的文档
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.2876821,
"hits": [
{
"_index": "products",
"_id": "1",
"_score": 0.2876821,
"_source": {
"code": " ABC-123 EXTRA "
}
}
]
}
}