当前位置: 首页 > news >正文

flex 做网站去成都旅游攻略怎么做

flex 做网站,去成都旅游攻略怎么做,广告策划公司简介,平湖做网站在Linux下使用Shell脚本导出Elasticsearch索引数据为CSV文件,可通过以下完整方案实现: 一、核心脚本 #!/bin/bash# 配置参数 ES_HOST"http://localhost:9200" INDEX_NAME"your_index_name" CSV_FILE"output.csv" SCROLL_…

在Linux下使用Shell脚本导出Elasticsearch索引数据为CSV文件,可通过以下完整方案实现:


一、核心脚本

#!/bin/bash# 配置参数
ES_HOST="http://localhost:9200"
INDEX_NAME="your_index_name"
CSV_FILE="output.csv"
SCROLL_DURATION="10m"
BATCH_SIZE=1000
QUERY='{"query": {"match_all": {}}}'  # 修改为实际查询条件# 创建CSV表头
echo "Extracting field headers..."
curl -s -X POST "$ES_HOST/$INDEX_NAME/_search?scroll=$SCROLL_DURATION&size=1" \-H 'Content-Type: application/json' \-d "$QUERY" | \jq -r '.hits.hits[0]._source | keys_unsorted | @csv' > "$CSV_FILE"# 初始化滚动查询
RESPONSE=$(curl -s -X POST "$ES_HOST/$INDEX_NAME/_search?scroll=$SCROLL_DURATION&size=$BATCH_SIZE" \-H 'Content-Type: application/json' \-d "$QUERY")
SCROLL_ID=$(echo "$RESPONSE" | jq -r '._scroll_id')
HITS_COUNT=$(echo "$RESPONSE" | jq '.hits.hits | length')# 循环获取所有数据
while [ "$HITS_COUNT" -gt 0 ]; do# 提取当前批次数据echo "$RESPONSE" | \jq -r '.hits.hits[]._source | [.[]] | @csv' >> "$CSV_FILE"# 获取下一批次RESPONSE=$(curl -s -X POST "$ES_HOST/_search/scroll" \-H 'Content-Type: application/json' \-d "{\"scroll\": \"$SCROLL_DURATION\", \"scroll_id\": \"$SCROLL_ID\"}")HITS_COUNT=$(echo "$RESPONSE" | jq '.hits.hits | length')# 进度显示echo "Exported $HITS_COUNT documents in this batch"
done# 清理滚动上下文
curl -s -X DELETE "$ES_HOST/_search/scroll" \-H 'Content-Type: application/json' \-d "{\"scroll_id\": [\"$SCROLL_ID\"]}"echo "Export completed! CSV saved to $CSV_FILE"

二、关键组件说明

  1. 必需工具

    • curl:HTTP请求工具
    • jq:JSON处理工具(安装:sudo apt install jq
  2. 核心机制

    • 滚动查询(Scroll API):处理大数据集(避免内存溢出)
    • 批量获取:通过size参数控制每批文档数
    • 自动提取表头:从首条文档获取字段名
  3. 安全认证(如需):

    # 在curl命令中添加认证参数
    curl -u username:password ...
    # 或使用API密钥
    curl -H "Authorization: Bearer YOUR_API_KEY" ...
    

三、使用示例

1. 基础导出

# 赋予执行权限
chmod +x export_es_to_csv.sh# 执行脚本
./export_es_to_csv.sh

2. 带条件导出

修改脚本中的QUERY参数:

QUERY='{"query": {"bool": {"filter": [{"range": {"timestamp": {"gte": "2023-01-01"}}},{"term": {"status": "active"}}]}}
}'

3. 选择特定字段

调整表头提取和数据处理部分:

# 表头(手动指定)
echo "id,name,created_at" > "$CSV_FILE"# 数据处理
jq -r '.hits.hits[]._source | [.id, .name, .created_at] | @csv'

四、性能优化技巧

  1. 增大批次尺寸

    BATCH_SIZE=5000  # 最大不超过10000
    
  2. 并行处理(使用xargs):

    # 将滚动ID分割为多个并行任务
    echo "$SCROLL_ID" | xargs -P 4 -I {} curl ...
    
  3. 禁用分片排序

    QUERY='{"query": {...},"sort": ["_doc"]  # 最轻量排序
    }'
    
  4. 压缩传输

    curl --compressed ...  # 添加压缩标志
    

五、错误处理增强版

在脚本中添加异常检测:

# 在关键操作后添加状态检查
if [ $? -ne 0 ]; thenecho "Error occurred at $(date)" >> export_error.logexit 1
fi# 增加重试机制
MAX_RETRY=3
for i in $(seq 1 $MAX_RETRY); docurl_command[ $? -eq 0 ] && break || sleep 5
done

六、替代方案对比

方法优点缺点
本脚本方案纯Shell、轻量级大数据集速度较慢
elasticdump+转换支持格式多(JSON/CSV)需额外安装Node.js
Logstash适合持续同步配置复杂、资源占用高
Python脚本处理灵活需Python环境

💡 提示:超过1亿文档建议使用Elasticsearch官方导出工具或Spark连接器

通过此脚本可实现高效、可控的ES数据导出,特别适合自动化运维场景。

http://www.dtcms.com/a/499638.html

相关文章:

  • PHP网站开发涉及的工具有哪些秦皇岛市海港区建设局网站
  • 如何定期清理电脑垃圾文件
  • 网站怎么做现场直播视频全国企业信息公示系统查询
  • JAVA村里租房系统小区租售系统源码支持微信小程序 + H5
  • 【图像处理】图像色彩空间 Lab、YCbCr、HSV
  • 怎么自己在电脑上做网站win2008做的网站打不开
  • 嘉兴外贸网站建网站备案号含义
  • 一个虚拟主机可以做几个网站个人网站备案填写要求
  • 通过ssh连接GitHub远程仓库
  • venv - python新手推荐的轻量化环境隔离方式
  • 网站核验单中国外包加工网
  • Ubuntu解决Github无法访问的问题
  • 关于 Qt5.11/12/15的QtCreator中对conncet宏SIGNAL不提示 的解决方法
  • C语言入门(十一)续:函数的深入认识
  • wordpress站点路径网上购物商城官网入口
  • 告别“手绘”图表:Illustrator与XD联动的数据可视化(Data Viz)工作流
  • m-card卡片组件
  • 企业内部网站建设方案怎样营销
  • 推荐一款开源的轻量级知识管理工具
  • GNU/Linux - GCC编译的静态库
  • 西安建网站哪家好企业网站蓝色模板下载
  • 成都模板建站代理网站优化要做哪些工作
  • Java MyBatis(一)--- 注解和XML的使用
  • 东莞官方网站 优帮云网站怎么做推广和优化
  • win64_11gR2_client.zip 怎么安装?Oracle 11g 客户端详细安装步骤
  • 建设向58同城的网站给客户做网站需要提供
  • flink sql 所有函数详细用例
  • Flink 1.20 flink-config.yml 配置详解
  • 湖州网站集约化平台南京做网站哪家公司好
  • 【深度学习新浪潮】2025全球机器学习技术大会:Agent技术突破与产业落地全景解析