Spring Data Elasticsearch - 使用规范化器

时间:2017-09-06 21:33:06

标签: java spring spring-data-elasticsearch

我们正在使用spring-data-elasticsearch项目与我们的弹性搜索集群进行交互,并且现在已经使用它大约一年了。最近,我们转移到elasticsearch 5.x(来自2.x),我们现在拥有"关键字"数据类型。

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

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

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

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

仅供参考,对于任何看过这个问题的人来说,答案是目前无法做到这一点。

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

然后,您可以创建该JSON文件并使用。

将其链接到您的域模型

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

请注意,根据我的经验,这不符合为字段提供的基于注释的映射。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

由于@xhaggi的拉取请求已合并(spring-data-elasticsearch 3.1.3+或Spring Boot 2.1.1),因此我们在normalizer批注中有一个@Field字段。 / p>

要使用它,我们需要:

  1. 使用参数@Field声明@InnerFieldtype = FieldType.Keyword, normalizer = "%NORMALIZER_NAME%"
  2. 在课程级别添加@Setting(settingPath = "%PATH_TO_NORMALIZER_JSON_FILE%")
  3. 将规范化器映射放入%PATH_TO_NORMALIZER_JSON_FILE%处的json文件中

Example of usage