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

我们刚刚发布了 Hibernate Search 6.1.0.Beta2,这是 Hibernate Search 下一个次版本的一个新测试版。

主要变化包括:使用“出站轮询”协调机制持久化和管理已中止事件,无需引用 Lucene 类即可定义 Lucene 分析器,Elasticsearch 7.16 兼容性,OpenSearch 1.2 兼容性等。

新增功能

Hibernate Search 6.1 仍在开发中:一些功能可能仍然不完整或可能以不兼容的方式更改。

依赖项升级

Hibernate ORM (HSEARCH-4400)

Hibernate Search 6.1 现在依赖于 Hibernate ORM 5.6.2。

Lucene (HSEARCH-4420)

Lucene 后端现在使用 Lucene 8.11.1。

Elasticsearch (HSEARCH-4340)

Elasticsearch 后端现在已测试与版本 5.6、6.8、7.10 或 7.16 的 Elasticsearch 服务器兼容。

OpenSearch (HSEARCH-4412)

Elasticsearch 后端现在已测试与版本 1.0 或 1.2 的 OpenSearch 服务器兼容。

其他

Log4j 升级

如前所述 这里,Hibernate 项目在运行时不使用 Log4j,因此不受最近发现的 Log4j 2 中各种漏洞的影响。

然而,Hibernate Search 在其自己的构建过程中、在执行测试时确实使用了 Log4j,因此我们不得不 更新我们的测试依赖项到 Log4j 2.17.1

顺便说一句,这可能有助于解决某些不正确理解运行时依赖项和测试依赖项之间差异的安全嗅探器,从而导致Hibernate Search(错误地)被报告为受到Log4j漏洞的影响。

使用“出站轮询”协调机制持久化和管理已中止的事件

HSEARCH-4283开始,现在的outbox-polling协调策略会将处理失败3次的事件持久化,但以“中止”状态防止其重新处理。

有几个API方法可用于统计中止事件、清除它们或请求重新处理。

使用分词器/过滤器名称定义Lucene分析器

HSEARCH-4404开始,可以不引用任何Lucene类来实现LuceneAnalysisConfigurer,而是通过名称引用分词器和过滤器

这在一些模块化环境中很有用,在这些环境中,应用程序可能可以访问Hibernate Search类,但不能访问Lucene类。

破坏性变更

与6.1.0.Beta1版本相比,没有破坏性变更。

其他改进和错误修复

  • HSEARCH-4423:当源属性路径包含两个具有相同名称但不同类型的属性时,Hibernate Search将不再错误地检测到循环并无法处理@IndexingDependency(derivedFrom = …​),感谢fraf报告此问题

  • HSEARCH-4401:当运行查询时,如果偏移量 + 限制大于Integer.MAX_VALUE,Lucene后端现在将正确地引发错误,而不是错误地忽略限制。

  • HSEARCH-4398:Hibernate Search不再有对org.apache.lucene:lucene-sandbox的必要传递依赖。

  • HSEARCH-4391:修复了文档中未显示图片的问题。

  • HSEARCH-4408:修复了文档中代码示例的语法高亮不再工作的问题。

等等。有关自上次发布以来所有变更的完整列表,请参阅发布说明

如何获取此版本

所有详细信息均可在hibernate.org上的专用页面上找到,并保持最新。

入门,迁移

对于新应用程序,请参阅入门指南

对于现有应用程序,假设您还升级了依赖项,Hibernate Search 6.1是6.0的替代品。有关已弃用配置和API的信息包含在迁移指南中。

反馈、问题、想法?

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


返回顶部