我可以使用开箱即用的Spring Data ElasticSearch将一些实体加载到ElasticSearch中。问题是我的模型类考虑了许多属性,对于其中一些我不希望我的表示(打字)反映到ES中。
@Field(serializer = MyCustomSerializer, deserializer = MyCustomDeserializer)
private SomeClass someObject;
例如,我想将SomeClass序列化为String,因此我可以这样查询它。此外,当从ES读取数据时,我希望能够编写自定义反序列化器(MyCustomDeserializer)以将此String转换为我自己的模型。
有什么方法可以实现吗?
由于
答案 0 :(得分:1)
Spring Data ElasticSearch使用jackson序列化字段,因此您可以通过定义以下内容来实现自定义序列化逻辑:
@JsonSerialize(using = MyCustomSerializer.class)
@JsonDeserialize(using = MyCustomDeserializer.class)
private SomeClass someObject;
或者在jackson ObjectMapper
中全局配置映射,从spring-data-elasticsearch中替换默认的EntityMapper
。更多关于here。