我们刚刚发布了 Hibernate Search 6.0.0.Alpha9,这是仍在开发中的 6.0 分支的一个新版本。此版本主要引入了对会话刷新和清除的正确处理,恢复了静态分片支持,并升级到 Elasticsearch 7.3、Lucene 8.2 和 Hibernate ORM 5.4.4.Final。
开始使用 Hibernate Search 6
如果您想直接进入全新的 Hibernate Search 6,参考文档中的 入门指南 是一个好的起点。
Hibernate Search 6 仍在开发中,其 API 与 Search 5 有很大差异。 有关此分支的当前状态的更多信息,请参阅 hibernate.org 上关于 Search 6 的专用页面。 有关迁移和我们将如何帮助您的更多信息,请参阅 迁移指南。 |
新增功能
正确处理会话刷新和清除
自 HSEARCH-3360 以来,与清除 Hibernate ORM 会话相关的多个长期存在的问题(HSEARCH-1270、HSEARCH-1350、…)已被解决。
现在可以透明地实现带有定期 flush
/clear
的批量处理
-
调用Hibernate Search API,如
fullTextSession.flushToIndexes()
不再必要; -
在
clear
中从会话中删除的实体将不再导致LazyInitializationException
; -
在事务中创建的每个文档,如果在循环中进行周期性的
flush
/clear
操作,将正确地在事务提交时索引(而不是在事务中间)。
请注意,Hibernate Search仍然需要在事务提交到索引之前将文档存储在内存中,这可能会超过您的JVM堆所能处理的数量,具体取决于文档的数量和复杂性。关于显式索引的部分提供了几种解决此问题的方法,请参阅文档中的相关部分。
静态分片
自HSEARCH-3314以来,已恢复对静态分片的支持。现在可以借助Elasticsearch的路由键,将Lucene索引分割成多个(静态定义的)分片。
有关更多信息,请参阅文档中有关分片的部分。
向后不兼容的API更改
自HSEARCH-3642以来,在搜索DSL中使用的DslConverter
和ProjectionConverter
枚举已被单个枚举ValueConvert
替换。
版本升级
-
HSEARCH-3660:升级到Elasticsearch 7.3.0
-
HSEARCH-3646:升级到Lucene 8.2.0
-
HSEARCH-3648:升级到Hibernate ORM 5.4.4
Hibernate Search 6现在需要ORM 5.4.4.Final或更高版本才能正确工作。早期5.4.x版本将无法正确工作。 这是由于必要的更改(HSEARCH-3447),以避免在ORM 6中可能被删除的已弃用原生条件API。 |
其他改进和错误修复
-
HSEARCH-3612:现在在通配符/前缀谓词中对模式进行了一致性的规范化。
-
HSEARCH-3062:现在可以在嵌套对象字段的单值字段上投影。
-
HSEARCH-3551:当在
module-info.java
中将Hibernate Search声明为依赖项时,Hibernate Search现在将正确启动。 -
HSEARCH-3068:当在事务之外(不推荐)进行实体更改时,Hibernate Search 6现在将在刷新时正确触发索引。
-
HSEARCH-3643:在索引时尝试提取字段值之前,现在将取消代理实体。感谢Alexis Cucumel将此错误报告给我们。
-
HSEARCH-899:现在,在类型未以任何方式映射(没有
@GenericField
,没有自定义桥接等)的情况下使用@IndexedEmbedded
将触发启动失败。
等等。有关自上次发布以来的全部更改列表,请参阅发行说明。
如何获取此版本
所有详细信息均可在hibernate.org上的专用页面上找到并保持最新。