Hibernate Search 是一个库,它通过自动索引实体,将 Hibernate ORM 与 Apache Lucene 或 Elasticsearch 集成,实现高级搜索功能:全文搜索、地理空间搜索、聚合等。更多信息,请参阅 hibernate.org 上的 Hibernate Search。

我们刚刚发布了 Hibernate Search 6.0 的第二个候选版本:版本 6.0.0.CR2。

这个版本主要提供了一种解决在 Spring Boot 2.3+ 上启动时应用程序挂起的工作区,以及类型桥和属性桥的类型参数,以及对目标 Elasticsearch 主机的基于 URI 的配置的替代方案。

还包括将 Lucene 升级到 8.7.0、Elasticsearch 升级到 7.10.0 和 Hibernate ORM 升级到 5.4.24.Final。

如果您想立即深入了解全新的 Hibernate Search 6,参考文档中包含的 入门指南 是一个好的起点。

如果您想迁移基于 Hibernate Search 5 的应用程序,请注意 Hibernate Search 6 API 与 Hibernate Search 5 有很大差异。我们建议您查看 迁移指南

虽然这个版本已经经过了广泛的测试,我们预计不会有任何特定的问题,但这个候选版本的目的是在最终发布之前尽可能多地捕获错误。

如果您遇到问题,请与我们联系

  • 当您不确定是使用问题还是错误时,请在带有 hibernate-search 标签的 Stack Overflow 或在我们的 "Hibernate Search" 类别中的 论坛 上提问。

  • 当您明显遇到错误时,请通过 JIRA 报告。

  • 有关更多沟通渠道,请参阅 此处

与Hibernate Search 5相比的新特性

关于Hibernate Search 6中新增特性和改进的概述,请参阅此处

与Hibernate Search 6.0.0.CR1相比的新特性

解决Spring启动挂起的bug的方法

Spring中的一个bug可能会导致当应用程序依赖于自定义bean时,在启动过程中挂起,除非您添加特定的配置。这影响Spring Boot 2.3.0及以上版本。

HSEARCH-4096开始,Hibernate Search仅在无法解析内置bean的bean引用时才会寻找Spring bean。这意味着不依赖于自定义bean的应用程序将不会受到Spring启动挂起bug的影响。

此外,配置属性中的bean引用现在可以使用前缀来指定如何检索bean。例如,如constructor:com.mycompany.MyBean这样的bean引用将始终绕过Spring并使用反射来实例化bean,从而避免Spring启动挂起bug。但是,bean将无法依赖@Autowired或其他Spring功能。

如果您确实需要在Hibernate Search组件中使用Spring bean,直到Spring项目解决这个死锁问题,最好的解决方案是将属性spring.data.jpa.repositories.bootstrap-mode在您的application.properties/application.yaml中设置为deferred

TypeBridge/PropertyBridge的类型参数

HSEARCH-4088开始,TypeBridge现在是TypeBridge<T>,而PropertyBridge现在是PropertyBridge<P>。新的类型参数表示桥接元素的预期类型。这有助于更容易地检测错误应用的桥接。

有关更多信息,请参阅更新的文档

实现原始TypeBridge/PropertyBridge类型的现有桥接将继续按原样工作。

配置URI而不是主机

HSEARCH-4099开始,目标Elasticsearch集群可以替代地使用URI进行配置,例如

hibernate.search.backend.uris = https://es1.mycompany.com:9200,https://es2.mycompany.com:9200

仍然可以使用基于主机的配置,但不能与基于URI的配置同时使用

hibernate.search.backend.hosts = es1.mycompany.com:9200,es2.mycompany.com:9200
hibernate.search.backend.protocol = https

版本升级

Hibernate Search 6需要ORM 5.4.4.Final或更高版本才能正确运行。早期的5.4.x版本可能导致难以理解的运行时异常。

破坏性变更

  • HSEARCH-4096:配置属性中的bean引用(例如分析配置器)现在将被解析。尝试引用包含冒号的bean名称(例如my.company:analysis:configurer)将导致启动时出现异常。为了解决这个问题,请将bean名称前缀为bean解析模式,例如bean:my.company:analysis:configurer。有关更多信息,请参阅此处

  • HSEARCH-4100:现在将在TRACE级别记录查询和请求。

  • HSEARCH-4101:Elasticsearch索引的默认必需状态现在是yellow

文档

  • HSEARCH-4067:配置示例不再包括令人困惑的注释(如(default))。

  • HSEARCH-4074:应根据用例更清楚地说明应选择哪种类型的桥接器。

  • HSEARCH-4094:JSR-352 集成文档现在明确提到需要额外的依赖项。

  • HSEARCH-4113:记录了有关 ORM Session 序列化的限制。

其他改进和错误修复

  • HSEARCH-4102:当使用 Elasticsearch 时,现在可以选择 no-alias 布局策略,以避免完全使用索引别名。这对于旧应用程序非常有用。

  • HSEARCH-4069SearchResult.took() 现在在 Lucene 后端中更准确。

  • HSEARCH-4107:从 Spring Boot 2.4+ 开始,Search 5 迁移助手的方法 Search.getFullTextEntityManager(…​)/Search.getFullTextSession(…​) 不会抛出 ClassCastException

  • HSEARCH-4108:如果 EntityManager/Session 是线程安全的,则 Search.session(…​) 返回的 SearchSession 现在可以从多个线程中使用。通常,注入到事务性 Bean 中的 EntityManager/Session 就是这样。

  • HSEARCH-4112:启用 JTA 时,Hibernate Search 不会再在 Spring 中索引实体时失败。

  • HSEARCH-4116:在检测未使用属性时,现在将忽略空、空白或 null 的配置属性。

等等。有关自上次发布以来的所有更改的完整列表,请参阅发行说明

如何获取此版本

所有详细信息都在 hibernate.org 上的专用页面 上,并且是最新的。

反馈、问题、想法?

要取得联系,请使用以下渠道


返回顶部