4

我已经用@Entity@Document(来自Spring Data Elasticsearch)注释了一个JPA实体,所以我基本上将与JPA相同的POJO索引到Elasticsearch中。

这是一个好的和推荐的做法吗?

如果没有,有什么替代方案?有两个不同的 POJO 并使用 Dozer 之类的东西将 JPA 实体映射到 ES 文档?

4

1 回答 1

2

我认为这取决于您的用例和对象模型的复杂性。对于一个简单的对象模型,我认为这很好。对于更复杂的对象模型,需要考虑以下几点:

  • 您真的想要/需要索引实体上的所有属性吗?
  • 您需要在索引之前转换对象吗?例如,扁平化关系。
  • 当您不想加载惰性关系时,对 ES 的序列化会导致加载它们吗?

如果没有,有什么替代方案?有两个不同的 POJO 并使用 Dozer 之类的东西将 JPA 实体映射到 ES 文档?

看起来 Spring Data Elasticsearch正在使用 Jackson 进行序列化。这是一个非常基本的默认配置。如果这对您不起作用并且您不想引入 DTO 类型对象,您可以随时实现自己的 mapper

于 2015-03-05T17:52:42.097 回答