Link Search Menu Expand Document Documentation Menu

标准化器

normalizer 映射参数为关键字字段定义了自定义归一化过程。与为文本字段生成多个词元的分析器不同,归一化器使用一组词元过滤器将整个字段值转换为单个词元。当您定义归一化器时,关键字字段会先由指定的过滤器处理,然后存储,同时保持文档的 _source 不变。

定义归一化器

以下请求创建一个名为 products 的索引,其中包含一个名为 my_normalizer 的自定义归一化器。该归一化器应用于 code 字段,该字段使用 trimlowercase 过滤器

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  "
        }
      }
    ]
  }
}
剩余 350 字符

有问题?

想贡献?