如何使用 Spring Data Elasticsearch 为字段实现自定义转换器?

分享于2022年07月17日 elasticsearch spring-boot spring-data-elasticsearch 问答
【问题标题】:如何使用 Spring Data Elasticsearch 为字段实现自定义转换器?(How to implement the custom converter for a field using Spring Data Elasticsearch?)
【发布时间】:2022-01-26 14:34:19
【问题描述】:

我需要在 spring data elastic-search 中实现一个自定义转换器。保存和检索时,我需要将某些内容连接到文本。我在这里看到过类似的 question 。答案是说它现在已经实施并且可用。但我没有找到任何如何实现它的例子。那么有人知道怎么做吗?


【解决方案1】:

您可以在库的测试代码中找到示例。

你必须创建一个转换器:

class FooConverter implements PropertyValueConverter {

    public static final String PREFIX = "foo-";

    @Override
    public Object write(Object value) {
        return PREFIX + value.toString();
    }

    @Override
    public Object read(Object value) {

        String valueString = value.toString();

        if (valueString.startsWith(PREFIX)) {
            return valueString.substring(PREFIX.length());
        } else {
            return value;
        }
    }
}

然后为你的实体类的属性注册它:

@Document(indexName = "foo")
class Entity {
    
    @Field(type = FieldType.Text)
    @ValueConverter(FooConverter.class)
    private String someField;
    
    // ...
}

  • 感谢您的回答。