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

我们刚刚发布了 Hibernate Search 的新候选版本:7.0.0.CR1。

本版本特别增加了与 Hibernate ORM 基于区分符的多租户的兼容性,与 Elasticsearch 8.10 和 OpenSearch 2.10/2.11 的兼容性,Hibernate ORM 6.3.1.Final 的升级,Lucene 9.8 的升级,一些 Maven 软件包重命名,以及其他错误修复和改进。

新功能

有关自 6.2 版以来的所有新功能和改进的总结,请访问 hibernate.org 上的专用页面。

依赖项升级

JDK 11(提醒)

Hibernate Search 现在需要 Java 11 作为基础,不再与 Java 8 兼容。

切换到 Jakarta EE(提醒)

Hibernate Search 已完全切换到 Jakarta EE,不再与 Java EE 兼容。所有以前的系列中的 -orm6-jakarta 软件包,它们提供了 Hibernate ORM 6 和 Jakarta EE 兼容性,现在都已不可用,因为这种兼容性现在由主要软件包提供。

Hibernate ORM (HSEARCH-4959)

Hibernate Search 现在依赖于 Hibernate ORM 6.3.1.Final。

Lucene (HSEARCH-4982)

Lucene 后端现在使用 Lucene 9.8。

Elasticsearch (HSEARCH-4946)

Elasticsearch 后端与 Elasticsearch 8.10 以及其他已兼容的版本一起工作 — 以下版本不再兼容,因为它们已经达到了生命周期的结束

  • 5.x/6.x(在 Hibernate Search 7.0.0.Beta1 中已取消兼容性)

  • 7.0-7.9(在 HSEARCH-4934 中新取消兼容性)

OpenSearch (HSEARCH-4978/HSEARCH-4993)

Elasticsearch后端支持与OpenSearch 2.10和2.11以及其他已兼容的版本一起工作 — 但不包括1.0、1.1和1.2版本,因为这些版本的兼容性已在HSEARCH-4934中删除,因为它们已经达到生命周期的终点。

其他

与Hibernate ORM基于discriminator的多租户兼容性

通过HSEARCH-4403,Hibernate Search现在可以索引利用数据库中基于discriminator的多租户(@TenantId)的Hibernate ORM实体。

Maven工件重命名

一些Hibernate Search Maven工件已被重命名

  • HSEARCH-4940 与JSR-352工件相关的Maven工件已被重命名,以反映转移到Jakarta EE规范

    • hibernate-search-mapper-orm-batch-jsr352-core 已重命名为 hibernate-search-mapper-orm-jakarta-batch-core

    • hibernate-search-mapper-orm-batch-jsr352-jberet 已重命名为 hibernate-search-mapper-orm-jakarta-batch-jberet

  • HSEARCH-4928 工件 hibernate-search-mapper-orm-coordination-outbox-polling 已重命名为 hibernate-search-mapper-orm-outbox-polling

其他改进和错误修复

  • HSEARCH-4938:不再支持正则表达式谓词中的补集运算符(~)。

  • HSEARCH-4947:Hibernate Search将不再在某些配置下在Windows上启动失败。

    感谢Gábor Lipták 报告此问题并帮助测试修复!

  • HSEARCH-4487:Jakarta Batch Mass Indexing作业已被重新设计,以更接近地反映MassIndexer的行为。因此,它将不再在索引包含@IndexedEmbedded的实体并使用MySQL以及将idFetchSize设置为Integer.MIN_VALUE时失败。

    感谢Ivan Kotev 报告此问题并帮助确定原因!

  • HSEARCH-4980:Hibernate Search将不再在Jakarta Batch Mass Indexing作业中尝试索引具有复合标识符的实体时失败。

  • HSEARCH-4969:修复了由于Lucene 9升级中的错误而引起的bug,其中TextMultiValues会触发IndexOutOfBoundsException

  • HSEARCH-4983:修复了Lucene后端中可能导致的潜在并发问题,这可能导致“`LockObtainFailedException`: 锁由此虚拟机持有”。

  • HSEARCH-4986:Jakarta Batch Mass Indexing作业将不再在某些JDBC驱动程序(DB2、MSSQL等)的分区映射阶段失败。

  • HSEARCH-4988:Hibernate Search将不再在启动时因映射自身类型的容器类型(如实现Iterable<Path>java.nio.Path)而引发StackOverflowError

    尝试在这些类型上使用默认容器提取将失败,并带有清晰的解释,并且禁用容器提取或以其他方式解决无限递归将按预期工作。

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

如何获取此版本

所有详细信息均可在hibernate.org的专用页面上找到,并保持最新。

入门,迁移

对于新应用程序,请参阅以下指南以了解Hibernate ORM集成

对于现有应用程序,假设您已经使用带有-orm6组件的Hibernate Search 6.2,升级到Hibernate Search 7.0主要需要从Hibernate Search依赖关系中移除-orm6后缀、更新版本号(或者您也可以使用BOM),当然,如果有其他依赖项(例如Hibernate ORM),还需要对这些依赖项进行对齐。

有关迁移、弃用和破坏性更改的信息包含在迁移指南中。

反馈、问题、想法?

要联系,请使用以下渠道


回到顶部