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

使用Elasticdump导出Elasticsearch索引数据失败及替代方案咨询

问题根因

你遇到的406报错是因为Elasticsearch 6.0及以上版本强制要求所有携带请求体的HTTP请求必须携带Content-Type: application/json请求头。导出mapping时请求为无请求体的GET请求,ES不会校验该字段,因此执行正常;而导出数据时使用带请求体的滚动查询POST请求,触发了校验逻辑。
添加header参数未生效通常由两个原因导致:一是elasticdump版本过旧,旧版本对headers参数的解析存在bug;二是shell环境下引号转义规则导致参数未被正确识别。

解决方案

步骤1:升级elasticdump到最新版本

如果你是通过npm安装的elasticdump,执行以下命令升级:
npm install elasticdump -g
如果你使用elasticdump的Docker镜像,拉取最新版本:
docker pull elasticdump/elasticsearch-dump:latest

步骤2:调整参数写法

调整header参数的引号写法,避免shell转义问题:

elasticdump \
  --input=http://localhost:9200/sessions2-110125 \
  --output=/usr/share/elasticsearch/dump/sessions2-110125_data.json \
  --type=data \
  --headers="{\"Content-Type\": \"application/json\"}"

步骤3:使用Docker版本执行(可选)

如果本地环境执行仍有问题,可以直接使用官方Docker镜像运行,避免环境差异:

docker run --rm -ti -v /你的本地导出目录:/tmp elasticdump/elasticsearch-dump \
  --input=http://宿主机器IP:9200/sessions2-110125 \
  --output=/tmp/sessions2-110125_data.json \
  --type=data \
  --headers='{"Content-Type": "application/json"}'

注意将命令中的宿主机器IP替换为你运行ES服务的机器实际IP,不要使用localhost,避免容器内部网络无法访问ES服务。

替代工具推荐

如果不想排查elasticdump的问题,也可以使用以下工具完成导出需求:

  • esm(elasticsearch-loader):轻量导入导出工具,支持JSON、CSV格式,使用简单,导出示例命令:esm export -u http://localhost:9200 -i sessions2-110125 -o output.json,输出为每行单条文档的JSON格式,可读性高且便于后续处理。
  • Logstash:适合大批量数据导出,通过配置elasticsearch input插件和file output插件,可灵活实现字段过滤、格式转换,支持输出为CSV、结构化JSON等多种格式。
  • Python自定义脚本:使用elasticsearch官方Python客户端执行滚动查询,逐行写入文件,灵活性最高,可根据需求自定义输出格式。

内容的提问来源于stack exchange,提问作者Eric-Hoffmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:03