如何使用Delete API删除指定日期范围内的Elasticsearch索引?
实现方案
注意:索引删除操作不可逆,执行前务必先运行预览模式确认待删除索引列表完全正确,避免误删数据。
实现思路
- 校验输入的两个日期格式是否符合
yyyy-mm-dd规范,同时保证起始日期早于结束日期 - 遍历起始日期到结束日期之间的所有自然日,拼接生成符合
abc-xyz-yyyy-mm-dd格式的索引名 - 先校验索引是否真实存在,再调用Elasticsearch Delete API执行删除操作
完整Shell脚本实现
#!/bin/bash # 按需修改为你的Elasticsearch服务地址 ES_HOST="http://127.0.0.1:9200" # 索引固定前缀 INDEX_PREFIX="abc-xyz-" # 校验输入参数 if [ $# -ne 2 ] && [ $# -ne 3 ]; then echo "用法: $0 <起始日期 yyyy-mm-dd> <结束日期 yyyy-mm-dd> [--confirm]" echo "示例1: $0 2024-01-01 2024-01-10 # 仅预览待删除索引,不执行删除" echo "示例2: $0 2024-01-01 2024-01-10 --confirm # 确认执行删除" exit 1 fi START_DATE=$1 END_DATE=$2 EXEC_DELETE=0 if [ "$3" == "--confirm" ]; then EXEC_DELETE=1 fi # 校验日期格式合法性 date -d "$START_DATE" "+%Y-%m-%d" >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "错误:起始日期格式非法,要求为yyyy-mm-dd格式" exit 1 fi date -d "$END_DATE" "+%Y-%m-%d" >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "错误:结束日期格式非法,要求为yyyy-mm-dd格式" exit 1 fi # 校验日期顺序 START_TS=$(date -d "$START_DATE" +%s) END_TS=$(date -d "$END_DATE" +%s) if [ $START_TS -gt $END_TS ]; then echo "错误:起始日期不能晚于结束日期" exit 1 fi echo "===== 索引日期范围:$START_DATE 至 $END_DATE =====" CURRENT_TS=$START_TS TO_DELETE=() # 遍历日期生成索引列表 while [ $CURRENT_TS -le $END_TS ]; do CURRENT_DATE=$(date -d @$CURRENT_TS "+%Y-%m-%d") INDEX_NAME="${INDEX_PREFIX}${CURRENT_DATE}" # 检查索引是否存在 HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "${ES_HOST}/${INDEX_NAME}") if [ $HTTP_CODE -eq 200 ]; then TO_DELETE+=($INDEX_NAME) echo "匹配到存在的索引:$INDEX_NAME" fi # 日期加1天 CURRENT_TS=$(($CURRENT_TS + 86400)) done if [ ${#TO_DELETE[@]} -eq 0 ]; then echo "未找到符合条件的索引,程序退出" exit 0 fi # 执行删除逻辑 if [ $EXEC_DELETE -eq 0 ]; then echo "===== 当前为预览模式,未执行删除,确认删除请添加 --confirm 参数 =====" else echo "===== 开始执行删除 =====" for IDX in "${TO_DELETE[@]}"; do echo "正在删除:$IDX" # 如果ES有账号密码,在curl后添加 -u 用户名:密码 参数即可 curl -X DELETE "${ES_HOST}/${IDX}" echo "" done echo "===== 所有匹配索引删除完成 =====" fi
可选优化:批量删除
如果待删除的索引数量较多,可以拼接成批量删除请求减少调用次数,格式如下:curl -X DELETE "${ES_HOST}/abc-xyz-2024-01-01,abc-xyz-2024-01-02,abc-xyz-2024-01-03"
内容的提问来源于stack exchange,提问作者coder2411
相关产品推荐
相关产品推荐

