简介

本指南的目的是帮助您将使用任何 7.1.x 版本的 Hibernate Search 的现有应用程序迁移到 7.2.x 系列的最新版本。

如果您认为有什么缺失或某些内容不起作用,请联系我们。联系我们

如果您要从早期版本迁移,则应按照每个版本的迁移指南逐步迁移,从一个次要版本迁移到下一个次要版本。

对于 Hibernate Search 5 用户

请注意,自 Hibernate Search 5 以来,许多 API 已经发生了变化,有一些只是因为包发生了变化,另一些则是因为更基本的更改(例如不再在 Hibernate Search API 中使用 Lucene 类型)。

从 Hibernate Search 5 迁移时,建议您首先使用6.0 迁移指南迁移到 Hibernate Search 6.0,然后再迁移到更高版本(这将变得容易得多)。

要求

Hibernate Search 7.2.0.Final 的要求与 Hibernate Search 7.1 的要求基本相同,唯一区别是 Hibernate ORM 版本升级

  • JDK 11 或更高版本;

  • Lucene 9 作为其 Lucene 后端;

  • Elasticsearch 7.10+ 或 OpenSearch 1.3+ 作为其 Elasticsearch 后端;

  • Hibernate ORM 6.6.x 适用于 Hibernate ORM 集成。

构件

Hibernate Search 7.2.0.Final 中 Maven 构件的坐标与 Hibernate Search 7.1 中的坐标相同。

数据格式和架构

索引

Hibernate Search 7.2.0.Final 中的索引格式和架构与 Hibernate Search 7.1 向后兼容:可以读取和写入旧索引,而无需重新索引。

出站轮询数据库表

Hibernate Search 7.2.0.Final 中用于出站轮询的事件和代理数据库表与 Hibernate Search 7.1 向后兼容:这些表不需要数据库架构更新。

配置

Hibernate Search 7.2.0.Final 中的配置属性与 Hibernate Search 7.1 向后兼容。

API

Hibernate Search 7.2.0.Final 中的API与 Hibernate Search 7.1 向后兼容。

由于 Hibernate ORM 允许使用非 String 租户标识符,因此某些 Hibernate Search 方法已弃用并引入了替代方法

  • org.hibernate.search.mapper.orm.scope.SearchScope#workspace(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.orm.scope.SearchScope#workspace(Object tenantId)

  • org.hibernate.search.mapper.orm.scope.SearchScope#massIndexer(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.orm.scope.SearchScope#massIndexer(Object tenantId)

  • org.hibernate.search.mapper.pojo.standalone.scope.SearchScope#workspace(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.pojo.standalone.scope.SearchScope#workspace(Object tenantId)

  • org.hibernate.search.mapper.pojo.standalone.scope.SearchScope#massIndexer(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.pojo.standalone.scope.SearchScope#massIndexer(Object tenantId)

  • org.hibernate.search.mapper.pojo.standalone.session.SearchSession#tenantIdentifier() 已弃用,建议使用 org.hibernate.search.mapper.pojo.standalone.session.SearchSession#tenantIdentifierValue()

  • org.hibernate.search.mapper.pojo.standalone.session.SearchSessionBuilder#tenantId(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.pojo.standalone.session.SearchSessionBuilder#tenantId(Object tenantId)

  • org.hibernate.search.mapper.orm.outboxpolling.mapping.OutboxPollingSearchMapping#countAbortedEvents(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.orm.outboxpolling.mapping.OutboxPollingSearchMapping#countAbortedEvents(Object tenantId)

  • org.hibernate.search.mapper.orm.outboxpolling.mapping.OutboxPollingSearchMapping#reprocessAbortedEvents(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.orm.outboxpolling.mapping.OutboxPollingSearchMapping#reprocessAbortedEvents(Object tenantId)

  • org.hibernate.search.mapper.orm.outboxpolling.mapping.OutboxPollingSearchMapping#clearAllAbortedEvents(String tenantId) 已弃用,建议使用 org.hibernate.search.mapper.orm.outboxpolling.mapping.OutboxPollingSearchMapping#clearAllAbortedEvents(Object tenantId)

此版本弃用了在多个搜索 DSL 方法中使用的 ValueConvert 枚举,并将其替换为新的 ValueModel 枚举。对于每个接受 ValueConvert 输入的已弃用方法,现在有一个替代方法,该方法改用接受 ValueModel。在代码中将 ValueConvert.YES 替换为 ValueModel.MAPPING,将 ValueConvert.NO 替换为 ValueModel.INDEX,在代码中显式设置了值的地方。

SPI

Hibernate Search 7.2.0.Final 中的 SPI 向后兼容 Hibernate Search 7.1。

已删除的弃用方法

  • org.hibernate.search.mapper.pojo.scope.spi.PojoScopeDelegate#workspace(DetachedBackendSessionContext)

  • org.hibernate.search.mapper.pojo.scope.spi.PojoScopeDelegate#massIndexer(PojoMassIndexingContext,DetachedBackendSessionContext)

行为

Hibernate Search 7.2.0.Final 的行为向后兼容 Hibernate Search 7.1。

值得一提的是,在 HSEARCH-5062 中进行更改后,您可能会注意到 Hibernate Search 创建的加载实体的查询发生了变化。虽然我们希望引入的更改应该有助于提高性能,但如果您发现其中有任何问题,我们欢迎您联系我们告知我们。