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

我们刚刚发布了 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-1270HSEARCH-1350、…)已被解决。

现在可以透明地实现带有定期 flush/clear 的批量处理

  • 调用Hibernate Search API,如fullTextSession.flushToIndexes()不再必要;

  • clear中从会话中删除的实体将不再导致LazyInitializationException

  • 在事务中创建的每个文档,如果在循环中进行周期性的flush/clear操作,将正确地在事务提交时索引(而不是在事务中间)。

请注意,Hibernate Search仍然需要在事务提交到索引之前将文档存储在内存中,这可能会超过您的JVM堆所能处理的数量,具体取决于文档的数量和复杂性。关于显式索引的部分提供了几种解决此问题的方法,请参阅文档中的相关部分

静态分片

HSEARCH-3314以来,已恢复对静态分片的支持。现在可以借助Elasticsearch的路由键,将Lucene索引分割成多个(静态定义的)分片。

有关更多信息,请参阅文档中有关分片的部分

向后不兼容的API更改

HSEARCH-3642以来,在搜索DSL中使用的DslConverterProjectionConverter枚举已被单个枚举ValueConvert替换。

版本升级

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上的专用页面上找到并保持最新。

反馈、问题、想法?

要取得联系,请使用以下渠道


返回顶部