迁移到 8.12

编辑

本节讨论了将您的应用程序迁移到 Elasticsearch 8.12 时需要注意的更改。

另请参阅 8.17 中的新功能发行说明

重大更改

编辑

8.12 中没有重大更改

值得注意的更改

编辑

8.12 中有一些值得注意的更改,您需要注意,我们可能将其视为值得注意的更改包括:

  • 对技术预览版中功能所做的更改。
  • 对日志格式的更改。
  • 对非公共 API 的更改。
  • 修复关键错误的行为更改。

授权更改

编辑
修复了来自声明的 JWT 主体

详情
这更改了 JWT 的主体格式,然后 JWT 才能被任何 JWT 领域实际验证。JWT 的主体是一种方便的方式来引用尚未被 JWT 领域验证的 JWT。JWT 的主体会打印在审计日志和常规日志中(特别是对于审计身份验证失败的情况),以及智能领域链重排序优化中。JWT 主体不*需要*与 JWT 身份验证用户的用户主体相同,但通常,它们应该相似。以前,JWT 的主体是由各个领域以与领域构建经过身份验证的用户的用户主体相同的方式构建的。这样做的好处是,在更简单的 JWT 领域配置中(例如,链中的单个 JWT 领域),JWT 主体和经过身份验证的用户的用户主体非常相似。然而,缺点是,通常,JWT 主体和用户主体可能非常不同(即,在一个 JWT 领域构建 JWT 主体而另一个领域构建用户主体的情况下)。另一个缺点是(未经过身份验证的)JWT 主体取决于领域排序,这使得从其主体识别 JWT 取决于 ES 身份验证领域的配置。此 PR 实现了构建 JWT 主体的统一固定逻辑,该逻辑仅依赖于 JWT 的声明,而不依赖于 ES 配置。

影响
用户将在 JWT(失败)身份验证情况下观察到 authentication_failed 审计日志事件的 user.name 属性的格式和值发生变化。

Java API 更改

编辑
Plugin.createComponents 方法已重构为采用单个 PluginServices 对象

详情
Plugin.createComponents 当前采用多个不同的服务参数。每次添加新服务时,此方法的签名都会更改。该方法现在已修改为采用单个接口对象,新的服务会添加到其中。这将在将来引入新服务时减少 API 不兼容问题。

影响
覆盖 createComponents 的插件将需要在 ES 8.12+ 上重构为覆盖新方法

REST API 更改

编辑
[ES|QL] pow 函数始终返回 double

详情
这纠正了 ES|QL 语言设计中的早期错误。最初,我们认为 pow 返回与其输入相同的类型,但在实践中,即使对于整数输入,它也会很快超出可表示的范围,并且我们大部分时间都返回 null。这还在从 double 转换为 double 时创建了很多边缘情况(底层 java 函数使用)。此 PR 中的版本遵循 java 规范,始终将其输入转换为 double,并返回 double。这样做还可以大大减少代码行数。

影响
低。大多数查询应该会继续使用此更改。