迁移到 8.15

编辑

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

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

8.15.0 中即将推出。

重大变更

编辑

Elasticsearch 8.15 中的以下更改可能会影响您的应用程序并阻止其正常运行。在升级到 8.15 之前,请查看这些更改并采取所述步骤来减轻影响。

集群和节点设置更改

编辑
skip_unavailable 远程集群设置的默认值更改为 true

详情
skip_unavailable 设置的默认值现在设置为 true。所有现有和未来未定义此设置的远程集群都将使用新的默认值。此设置仅影响使用 _search 或 _async_search API 的跨集群搜索。

影响
跨集群搜索中不可用的远程集群将不再导致搜索失败,除非在 elasticsearch.yml 中或通过 _cluster/settings API 将 skip_unavailable 配置为 falseskip_unavailable=true (显式或使用新的默认值) 的不可用集群在搜索响应元数据部分中标记为 SKIPPED,并且不会导致整个搜索失败。如果用户希望确保在特定远程集群不可用时搜索返回失败,则现在必须显式设置 skip_unavailable

汇总更改

编辑
禁止在没有汇总用法的集群中创建新的汇总作业

详情
当在没有汇总用法的集群中创建汇总作业时,put rollup API 将失败并显示错误

影响
没有汇总用法(没有汇总作业或索引)的集群不能创建新的汇总作业

REST API 更改

编辑
?timeout=-1 解释为无限 ack 超时

详情
目前,Elasticsearch 在许多 API 中接受参数 ?timeout=-1,但将其解释为与 ?timeout=0 相同。从 8.15 开始,?timeout=-1 将表示无限期等待,使此参数的行为与其他类似参数(如 ?master_timeout)保持一致。

影响
使用 ?timeout=0 强制相关操作立即超时,而不是使用 ?timeout=-1

在 GET inference API 中将 model_id 替换为 inference_id

详情
从 8.15 开始,获取推理 API 响应将返回一个 inference_id 字段,而不是 model_id

影响
如果您的应用程序在 GET inference API 响应中使用 model_id,请将其切换为使用 inference_id

弃用

编辑

以下功能已在 Elasticsearch 8.15 中弃用,并将在未来版本中删除。虽然这不会对您的应用程序产生直接影响,但我们强烈建议您在升级到 8.15 后采取所述步骤来更新您的代码。

要了解您是否正在使用任何已弃用的功能,请启用弃用日志记录

集群和节点设置弃用

编辑
弃用 indices.breaker.total.limit 设置的绝对大小值

详情
以前,indices.breaker.total.limit 的值可以指定为字节为单位的绝对大小。此设置控制服务器在采取补救措施之前允许使用的总内存量。当节点最大堆大小更改时,将其设置为特定字节数会导致奇怪的行为,因为断路器限制将保持不变。这将导致该值过低,导致部分堆未被使用;或者它会使该值过高,导致断路器无法有效防止 OOM 错误。此设置唯一合理的行为是它随堆大小缩放,因此现在已弃用绝对字节限制。

影响
用户必须更改其配置,为 indices.breaker.total.limit 指定百分比而不是绝对字节数,或者接受默认值,该值已指定为百分比。

REST API 弃用

编辑
弃用 text_expansionweighted_tokens 查询

详情
text_expansionweighted_tokens 查询已替换为 sparse_vector

影响
请更新您现有的 text_expansionweighted_tokens 查询以使用 sparse_vector.

弃用使用 slm 权限访问 ilm

详情
read_slm 权限可以获取 ILM 状态,而 manage_slm 权限可以启动和停止 ILM。应该使用 read_ilmmanage_ilm 权限授予对这些 API 的访问权限。在未来的主要版本中,将从 SLM 权限中删除对 ILM API 的访问权限,现在已弃用。

影响
需要访问 ILM 状态 API 的用户现在应该使用 read_ilm 权限。需要启动和停止 ILM 的用户应该使用 manage_ilm 权限。