Dockerfile
FROM alpine:latest
# 安装curl
RUN apk add --no-cache curl coreutils
# 将脚本复制到容器中
COPY delete_indices.sh /delete_indices.sh
# 设置执行权限
RUN chmod +x /delete_indices.sh
# 设置容器启动时执行的命令
CMD ["/delete_indices.sh"]
delete_indices.sh
#!/bin/sh
#环境变量说明
#DAYS:删除天数
#PREFIX:索引前缀
#SUFFIX:索引后缀 拼接后的索引:logstash-*2024.03.15
#ES_USER:es账号
#ES_PASSWORD:es密码
#ES_HOST:es地址
DAYS_AGO=$(date -d@"$(( `date +%s`-86400*$DAYS))" +"%Y.%m.%d")
INDEX_PATTERN=$PREFIX$DAYS_AGO$SUFFIX
echo $INDEX_PATTERN
# 使用curl列出所有匹配的索引
INDICES=$(curl -s -k -u "$ES_USER:$ES_PASSWORD" "$ES_HOST/_cat/indices/$INDEX_PATTERN?v" | awk 'NR>1 {print $3}')
# 遍历索引并删除它们
for INDEX in $INDICES; do
echo "Deleting index: $INDEX"
curl -k -XDELETE -u $ES_USER:$ES_PASSWORD $ES_HOST/$INDEX
done
制作镜像
docker build -t es-index-cleaner:latest .
curl命令 -s -k 说明
-
-s, --silent
这个选项使 curl 在运行时“沉默”,即不显示进度和错误消息。它通常用于脚本中,因为你不希望 curl 的输出包含任何与请求本身无关的信息。
例如,当你只想获取 URL 的内容而不显示任何其他信息时,可以使用此选项。 -
-k, --insecure
这个选项允许 curl 在进行 HTTPS 请求时忽略 SSL 证书验证。这意味着,即使服务器的 SSL 证书无效、过期或无法验证,curl 也会继续连接并获取内容。