【问题标题】:How to make a custom converter for a String field using Spring Data Elasticsearch?如何使用 Spring Data Elasticsearch 为字符串字段制作自定义转换器?
【发布时间】:2021-11-17 04:13:12
【问题描述】:

我在我的项目中使用 Spring Data Elasticsearch。我有这样的课,

@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-boot elasticsearch spring-data-elasticsearch


    【解决方案1】:

    目前没有更好的解决方案。为 Spring Data Elasticsearch 注册的转换器从类转换为字符串并返回。为您的案例注册转换器将转换每个实体的 any 字符串属性。

    我之前考虑过属性的自定义转换器,我创建了a ticket for this。

    编辑 05.11.2021:

    使用https://github.com/spring-projects/spring-data-elasticsearch/pull/1953 实现,将从 4.3.RC1 开始提供。

    【讨论】:

    • 那真的很方便。我期待着那个更新。谢谢。
    • 有没有例子,如何在4.3.RC1中实现这个?
    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    相关资源
    最近更新 更多