【问题标题】:Hibernate Search vs spring-data-solr , spring-data-elasticsearch休眠搜索与 spring-data-solr , spring-data-elasticsearch
【发布时间】:2021-07-08 08:52:01
【问题描述】:

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

我明白以下内容

  • hibernate search 或 spring-data-* 都可以集成到我的应用中

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

  • 外部弹性搜索/ solr 有它自己的好处,但我没问题

    嵌入也开始。

我的问题

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

【问题讨论】:

    标签: spring-data spring-data-jpa hibernate-search spring-data-elasticsearch spring-data-solr


    【解决方案1】:

    由于我是一名 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 不是很灵活。 编辑:现在不再适用@ 987654321@已发布。
    • 过去曾开发过 Spring-Data-HibernateSearch 模块,但不再积极维护:https://github.com/snowdrop/spring-boot-hibernate-search-booster

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多