如何使用 Spring Data Elasticsearch 为字符串字段制作自定义转换器?
How to make a custom converter for a String field using Spring Data Elasticsearch?
我在我的项目中使用 Spring Data Elasticsearch。我有一个这样的class,
@Document("example")
class Example {
@Id
private String id;
private String name;
private String game;
private String restField;
}
我需要的是,每当我将 Example 对象保存到 elasticsearch 时,我都会删除一个值。但是当我从 elasticsearch 获取数据时,我需要附加删除的值。
save(Example example) {
example.setRestField(example.getRestField().replace("***", ""));
exampleRepository.save(example);
}
get(String id) {
Example example = exampleRepository.findById(id);
example.getRestField().concat("***");
return example;
}
我现在就是按照上面的方法做的。但是我们可以为此使用自定义转换器吗?我检查了 Spring Data Elasticsearch 的转换器示例,但这些示例适用于不同的不同对象。如何仅为这个特定的字符串字段 restField
创建自定义转换器?我不想将此转换器应用于其他字符串字段。
目前没有更好的解决办法。为 Spring Data Elasticsearch 注册的转换器在 class 和字符串之间来回转换。为您的案例注册转换器将转换每个实体的 any 字符串 属性。
我之前考虑过属性的自定义转换器,我创建了 a ticket for this。
编辑 2021 年 11 月 5 日:
与 https://github.com/spring-projects/spring-data-elasticsearch/pull/1953 一起实现,将从 4.3.RC1 开始可用。
我在我的项目中使用 Spring Data Elasticsearch。我有一个这样的class,
@Document("example")
class Example {
@Id
private String id;
private String name;
private String game;
private String restField;
}
我需要的是,每当我将 Example 对象保存到 elasticsearch 时,我都会删除一个值。但是当我从 elasticsearch 获取数据时,我需要附加删除的值。
save(Example example) {
example.setRestField(example.getRestField().replace("***", ""));
exampleRepository.save(example);
}
get(String id) {
Example example = exampleRepository.findById(id);
example.getRestField().concat("***");
return example;
}
我现在就是按照上面的方法做的。但是我们可以为此使用自定义转换器吗?我检查了 Spring Data Elasticsearch 的转换器示例,但这些示例适用于不同的不同对象。如何仅为这个特定的字符串字段 restField
创建自定义转换器?我不想将此转换器应用于其他字符串字段。
目前没有更好的解决办法。为 Spring Data Elasticsearch 注册的转换器在 class 和字符串之间来回转换。为您的案例注册转换器将转换每个实体的 any 字符串 属性。
我之前考虑过属性的自定义转换器,我创建了 a ticket for this。
编辑 2021 年 11 月 5 日:
与 https://github.com/spring-projects/spring-data-elasticsearch/pull/1953 一起实现,将从 4.3.RC1 开始可用。