You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Elasticsearch transforms从停止状态自动恢复运行

Elasticsearch Transform任务重启自动恢复解决方案

可以修改该默认行为,根据你使用的Elasticsearch版本不同有两种实现方式:

方案1:7.13及以上版本使用原生配置实现

7.13版本开始Elasticsearch为Transform任务新增了故障重试和自动恢复配置,无需额外开发即可实现需求:

  • 创建/更新Transform任务时,在settings参数中添加num_failure_retries配置项,设置为大于0的数值即可让任务在异常停止后自动重试重启,如果你希望无限重试直到成功,可以设置为-1
  • 新任务创建示例:
PUT _transform/your_transform_id
{
  "source": {
    "index": "your_source_index"
  },
  "dest": {
    "index": "your_dest_index"
  },
  "settings": {
    "num_failure_retries": -1
  },
  // 此处补充你的pivot/latest等业务配置
}
  • 已创建任务修改配置示例:
POST _transform/your_transform_id/_update
{
  "settings": {
    "num_failure_retries": -1
  }
}
  • 该配置不仅能实现ES重启后自动恢复任务,也能处理其他非用户主动停止导致的任务异常停止场景。

方案2:7.13以下版本使用自定义脚本实现

低版本没有原生支持的自动恢复配置,可以通过定时脚本轮询实现:

  • 实现逻辑:定时调用GET _transform/*/_stats接口,筛选出状态为stopped且停止原因不是用户主动停止的任务,调用POST _transform/<transform-id>/_start接口启动即可
  • 简单shell脚本示例(需提前安装jq工具):
# 替换为你的ES地址、认证信息
ES_HOST="http://127.0.0.1:9200"
ES_USER="your_username"
ES_PWD="your_password"

# 获取所有非用户主动停止的stopped状态transform任务
FAILED_TRANSFORMS=$(curl -s -u "$ES_USER:$ES_PWD" -XGET "$ES_HOST/_transform/*/_stats" | jq -r '.transforms[] | select(.state == "stopped" and .reason != "user stopped") | .id')

for TRANSFORM in $FAILED_TRANSFORMS; do
  # 启动异常停止的任务
  curl -s -u "$ES_USER:$ES_PWD" -XPOST "$ES_HOST/_transform/$TRANSFORM/_start"
done
  • 把上述脚本加入crontab或者其他定时任务系统,按照你的业务容忍度设置执行间隔即可。

内容的提问来源于stack exchange,提问作者Vidya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:00:04