1

我可以使用开箱即用的 Spring Data ElasticSearch 将一些实体加载到 ElasticSearch 中。问题是我的模型类考虑了许多属性,对于其中一些我不希望我的表示(打字)反映到 ES 中。

@Field(serializer = MyCustomSerializer, deserializer = MyCustomDeserializer)
private SomeClass someObject;

例如,我希望 SomeClass 被序列化为字符串,因此我可以这样查询它。另外,从 ES 读取数据时,我希望能够编写一个自定义反序列化器(MyCustomDeserializer)来将此字符串转换为我自己的模型。

有什么办法可以做到吗??

谢谢

4

1 回答 1

1

Spring Data ElasticSearch 使用 jackson 序列化字段,因此您可以通过定义来实现自定义序列化逻辑:

@JsonSerialize(using = MyCustomSerializer.class)
@JsonDeserialize(using = MyCustomDeserializer.class)
private SomeClass someObject;

或者在 jackson 中全局配置您的映射ObjectMapper,替换EntityMapperspring-data-elasticsearch 中的默认值。更多关于 这里

于 2014-10-01T13:19:36.543 回答