休眠搜索vs弹簧数据solr,弹簧数据弹性搜索

Muk*_*kun 2 hibernate-search spring-data spring-data-jpa spring-data-solr spring-data-elasticsearch

我有一个Spring Boot,Spring Data JPA(休眠)Web应用程序,想要引入文本搜索功能。

我了解以下内容

  • 休眠搜索或spring-data- *都可以集成到我的应用中

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

  • 外部弹性搜索/ Solr有其自身的优势,但我可以接受

    嵌入式也从这里开始。

我的问题

  • 哪个库更易于开发和维护。
  • 我看到solr vs elasticsearch的许多优缺点,但是需要Hibernate search vs spring-data- *的优点和缺点
  • 我找到了一个在现有应用程序中引入Hibernate Search的示例。但spring-data-上没有任何内容,如何在spring-data-中重新索引或触发现有数据库数据的索引

yro*_*ere 5

自从我是Hibernate开发人员以来,我显然有偏见,但是我至少可以提供一些专注于Hibernate Search的元素。至于哪个“更好”,则由您来判断。

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

  • Hibernate Search将根据JPA实体中的更改(在提交事务后立即)自动在全文索引中添加/更新/删除文档。
  • Hibernate Search将允许您构建全文查询(全文世界),并将结果作为托管实体(JPA世界)进行检索。

据我了解,Spring-Data-Elasticsearch专注于访问Elasticsearch,并且没有任何JPA集成。也就是说,您可以使用Spring-Data-JPA,也可以使用Spring-Data-Elasticsearch,但它们不会相互通信。您将拥有两个单独的模型,分别对它们进行更新和查询。

其他一些要素:

  • 如果不需要分布式索引,则Hibernate Search可以在嵌入式Lucene模式下运行,而无需所有Elasticsearch堆栈。它可能会更轻巧。
  • 由于抽象层,在自定义Elasticsearch映射或使用高级Elasticsearch功能时,Hibernate Search 当前并不十分灵活。不过,这种情况将来会改变(Hibernate Search 6)。
  • 一个Spring-Data-HibernateSearch模块正在开发中,可以从两全其美中受益。它尚未发布,并且尚未得到充分记录,不过:https : //github.com/snowdrop/spring-boot-hibernate-search-booster