Hibernate Search vs spring-data-solr , spring-data-elasticse



我有一个弹簧靴,弹簧数据JPA(Hibernate)Web应用程序,并希望介绍文本搜索功能。

我了解以下

  • Hibernate Search或Spring-Data-*可以集成到我的应用中

  • Hibernate搜索可以与嵌入式Lucene或外部弹性一起使用搜索。

  • 外部弹性搜索/solr有其自身的好处,但我可以接受

    也嵌入为。

我的问题

  • 哪个图书馆更适合轻松开发和维护。
  • 我看到了Solr vs Elasticsearch的许多优缺点,但需要专业人士冬眠搜索的缺点与弹簧数据 - *
  • 我在现有应用。但是在春季data- 上什么都没有,如何重新索引或触发在Spring-DATA中的现有数据库数据索引 -

我显然很有偏见,因为我是一个冬眠的开发人员,但是我至少可以提供一些专注于休眠搜索的元素。关于哪个是"更好的",这是您判断的。

主要区别在于,Hibernate搜索提供了JPA和您选择的索引(Lucene或Elasticsearch)之间的集成:

  • Hibernate搜索将根据JPA实体的更改在您的全文索引中自动添加/Update/Delete文档(一旦您提交交易,请立即)。
  • Hibernate搜索将允许您构建全文查询(全文世界),并将结果检索为托管实体(JPA世界)。
据我所知,Spring-Data-Elasticsearch专注于访问Elasticsearch,并且没有JPA集成。也就是说,您可以使用Spring-Data-JPA,并且可以使用Spring-Data-elasticsearch,但它们不会相互通信。您将有两个单独的型号,您将分别更新和查询。

其他一些元素:

  • 如果您不需要分布式索引,那么Hibernate搜索可以在嵌入式Lucene模式下运行,而无需所有弹性搜索堆栈。它可能会更轻巧。
  • Hibernate搜索是当前在自定义您的elasticsearch映射或使用高级Elasticsearch功能时,由于具有抽象层。编辑:不再是TRUE:现在冬眠搜索6已发布。
  • 过去曾在一个弹簧data-hibernatesearch模块进行工作,但不再积极维护:https://github.com/snowdrop/snowdrop/spring-boot-boot-hibernate-search-search-booster

最新更新