迁移到 8.12

编辑

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

另请参见 8.16 新特性发行说明

重大更改

编辑

8.12 版本中没有重大更改。

显著更改

编辑

8.12 版本中有一些需要注意的显著更改,我们可能认为以下内容属于显著更改:

  • 对技术预览版功能的更改。
  • 日志格式的更改。
  • 对非公开 API 的更改。
  • 修复严重错误的行为更改。

授权更改

编辑
修复了 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 函数始终返回双精度浮点数

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

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