我们在此为您提供将现有 Search 应用程序迁移到最新版本的帮助。
从 5.9.x 升级到 Hibernate Search 5.10.x
本指南的目的是帮助您将使用任何 5.9.x 版本的 Hibernate Search 的现有应用程序迁移到 5.10.x 系列的最新版本。如果您希望迁移不同版本,请参阅 Hibernate Search 迁移指南。
本文档提供了迁移的要点。它指的是 Hibernate Search 5.10.10.Final 版本。如果您认为缺少内容或某些内容无法正常工作,请 联系我们。 |
需求
此版本的 Hibernate Search 现在需要使用来自 5.3.x 系列的 Hibernate ORM 版本。
这意味着它现在需要 JPA 2.2,因为这是 Hibernate ORM 5.3 实现的 JPA 版本。
配置更改
-
我们 在我们的 JAR 中添加了 Java 模块名称。以前,JVM 是根据 JAR 文件名推断名称的,就像它对所有未定义模块名称的 JAR 所做的那样。如果您在
module-info中依赖 Hibernate Search,您可能需要更新这些依赖项。
API 更改
-
ElasticsearchEnvironment.ANALYSIS_DEFINITION_PROVIDER现在包含elasticsearch.analysis_definition_provider,没有hibernate.search.前缀,与同一类中的其他常量保持一致。 -
在我们的 API 中,少数在不兼容的方式发生改变的地方,已经恢复了与 Hibernate Search 5.5 的二进制兼容性。这主要对 Hibernate Search 集成者有意义。
SPI 更改
-
从
org.hibernate.search.indexes.spi.IndexManagerType中删除了两个方法:createAnalyzerStrategy和createMissingValueStrategy。为了替代它们,我们添加了IndexFamilyImplementor createIndexFamily(ServiceManager, SearchConfiguration),它会创建一个中间的“索引族”,而这个索引族又会提供分析器策略和缺失值策略。有关更多信息,请参阅org.hibernate.search.indexes.spi.IndexFamilyImplementor的 javadoc。 -
org.hibernate.search.hcore.spi.EnvironmentSynchronizer现在公开了org.hibernate.search.hcore.spi.EnvironmentSynchronizer#whenEnvironmentDestroying方法。
行为更改
-
自 HSEARCH-3039 起,嵌入式 ID 不再被分析。嵌入式 ID 是定义为
@DocumentId(或者在没有的情况下,JPA 的@Id)的属性,然后使用@IndexedEmbedded(includeEmbeddedObjectId = true)或@IndexedEmbedded(includePaths = { …, "<the ID property name>", … })嵌入到另一个文档中。