Spring Data Elasticsearch - 使用标准化器创建关键字字段

Spring Data Elasticsearch - Create keyword field with normalizer

我们正在使用 spring-data-elasticsearch 项目来连接我们的 elasticsearch 集群,现在已经使用了大约一年。最近,我们迁移到 elasticsearch 5.x(从 2.x)我们现在有 "keyword" 数据类型。

我想将这些关键字索引为小写值,我知道这可以通过字段规范化器来完成。我无法在文档或在线的任何地方找到可以通过基于注释的映射向字段添加规范化器的地方。 例如

@Field(type = FieldType.keyword, <some_other_param = some_normalizer>)

这是可以做到的吗?我知道我们也可以使用基于 JSON 的映射定义,所以如果需要我会回退到那个选项,但如果可能的话我希望能够这样做。

任何帮助将不胜感激!

仅供参考,对于任何看到这个的人来说,答案是目前没有办法做到这一点。

但是,您可以通过以 Elasticsearch 格式将映射文件创建为 JSON 来执行此操作。看: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html

然后您可以创建 JSON 文件并将其 link 添加到您的域模型中。

@Mapping(mappingPath = "some/path/mapping.json")

请注意,根据我的经验,这与提供的基于注释的字段映射不兼容。

有一个未决问题https://jira.spring.io/browse/DATAES-492等待审核。

由于@xhaggi 的pull request 已经合并(spring-data-elasticsearch 3.1.3+ 或Spring Boot 2.1.1),我们有一个normalizer 字段在 @Field 注释中。

要使用它,我们需要:

  1. 使用参数 type = FieldType.Keyword, normalizer = "%NORMALIZER_NAME%"
  2. 声明 @Field@InnerField
  3. 在 class 级别添加 @Setting(settingPath = "%PATH_TO_NORMALIZER_JSON_FILE%")
  4. 将规范器映射放入 json 文件 %PATH_TO_NORMALIZER_JSON_FILE%

Example of usage