Hibernate Search与spring-data-solr,spring-data-elasticsearch

问题描述 投票:2回答:1

我有一个Spring Boot,Spring Data JPA(hibernate)Web应用程序,并希望引入文本搜索功能。

我理解以下内容

  • hibernate搜索或spring-data- *都可以集成到我的应用程序中
  • Hibernate搜索可以使用嵌入式Lucene或外部弹性搜索。
  • 外部弹性搜索/ solr有其自身的好处,但我没关系 嵌入也是为了开始。

我的问题

  • 哪个库更易于开发和维护。
  • 我看到了solr vs elasticsearch的许多优点和缺点,但需要Hibernate搜索的优缺点与spring-data- *
  • 我找到了一个在现有应用程序中引入Hibernate Search的示例。但没有关于spring-data-,如何重新索引或触发spring-data中现有数据库数据的索引 -
spring-data spring-data-jpa hibernate-search spring-data-elasticsearch spring-data-solr
1个回答
4
投票

因为我是一名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堆栈。它可能会更轻巧。
  • 由于抽象层,Hibernate Search在自定义Elasticsearch映射或使用高级Elasticsearch功能方面目前不是很灵活。但是,这将在未来发生变化(Hibernate Search 6)。
  • Spring-Data-HibernateSearch模块正在开发中,可以从两全其美的优势中受益。它尚未发布,但尚未有很好的文档记录,但是:https://github.com/snowdrop/spring-boot-hibernate-search-booster
© www.soinside.com 2019 - 2024. All rights reserved.