1. 脚本功能解析与背景说明
这个Shell脚本的核心功能是通过Elasticsearch的_delete_by_query接口,自动清理ws_price_log索引中超过6个月的历史数据。在实际业务场景中,日志类数据通常只需要保留一定时间范围,长期存储不仅占用大量磁盘空间,还会影响查询性能。
脚本的工作原理是:
- 计算6个月前的Unix时间戳
- 构建Elasticsearch查询条件,筛选logCtime字段值小于该时间戳的文档
- 通过HTTP API提交异步删除任务
这种定时清理机制特别适合以下场景:
- 日志类索引的定期维护
- 临时数据的历史清理
- 满足数据保留策略合规要求
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与配置说明
2.1 基础环境要求
要运行此脚本,需要确保:
- 服务器已安装curl工具(一般Linux系统默认安装)
- 网络能够访问Elasticsearch集群的9200端口
- 拥有目标索引的删除权限账户
2.2 关键参数配置
脚本中有几个需要根据实际情况修改的参数:
bash复制es_master_host="https://[=es_master_host]" # ES集群地址
index="ws_price_log" # 目标索引名称
建议将这些参数提取为脚本变量,方便维护:
bash复制#!/bin/bash
# 可配置参数
ES_HOST="https://your-es-host:9200"
ES_USER="your_username"
ES_PASS="your_password"
INDEX_NAME="ws_price_log"
RETENTION_MONTHS=6
3. 脚本核心逻辑详解
3.1 时间计算逻辑
bash复制historyTime=$(date "+%s" -d '6 month ago')
这行代码使用date命令计算6个月前的Unix时间戳:
+%s:输出秒级时间戳-d '6 month ago':计算6个月前的时间
注意:不同Linux发行版的date命令可能有差异。如果遇到"invalid date"错误,可以尝试:
bash复制historyTime=$(da
