我们刚刚发布了 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
标签的 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
版本升级
-
HSEARCH-4098:升级到Lucene 8.7.0
-
HSEARCH-4104:升级到Elasticsearch 7.10.0
-
HSEARCH-4111:升级到Hibernate ORM 5.4.24.Final
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-4069:
SearchResult.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 上的专用页面 上,并且是最新的。