使用shell脚本怎么批量删除es索引

  介绍

使用shell脚本怎么批量删除es索引?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

发现elasticsearch集群的状态是红色,unassign的分片数很多,看了下都是些旧的日期的索引(应该是定时任务删除失败导致的)。

curl  -XGET  ip:港口/_cat/shards  |, grep 未赋值的

数量有几百个,写个脚本处理下,先恢复成green.red状态好像会影响索引创建和数据迁移

先把需要删除的索引导出到文件

curl  -XGET  ip:港口/_cat/shards  |, grep  UNASSIGNED 在祝辞needDelIndex。txt

确认下要删除的索引列表。没问题就执行下面删除壳(es的ip和端口需要修改下)

# !/bin/bash   echo “$ 1”;   esUrl=$ {esip}: ${国务委员}   indexfile=needDelIndex.txt   # cp  -f /dev/null  $ {indexfile}   # curl  -XGET  ip:港口/_cat/shards  |, grep  UNASSIGNED 在祝辞needDelIndex.txt   if [!大敌;-f 。/$ {indexfile},];然后   echo 才能;indexfile 美元;not 存在   ,exit  0   fi   日志文件=esindex_del. ' date  +“% m - % d" ' . log   cp  -f /dev/null  ${日志文件}   lastIndexName=皌est"   for  item 拷贝的cat  $ {indexfile}, |, awk  & # 39; {print  1美元}& # 39;”   做   if 才能;[,“item"美元,=,“error",)   然后才能   ,才能继续   fi才能   if 才能;[,“item"美元,!=,“lastIndexName"美元;,)   然后才能   ,,,curl  -XDELETE  $ {esUrl}/${项},在祝辞,${日志文件}   ,,,echo  - - - - - - - - - - - - ${项},“日期”,在祝辞,${日志文件}   ,,sleep  5   fi才能   lastIndexName才能=${项}   完成了

因为我们的索引是按天创建的,索引名前缀是yyyy-MM-dd,保留一段时间后需要批量删除.shell的第一个参数为yyyy-MM-dd,将删除该天及以前的旧索引

# !/bin/bash   esUrl=$ {esip}: ${国务委员}   echo “$ 1”;   if [$ #大敌;-ge  1,)   然后   deleteDate才能=1美元   其他的   echo 才能“please  inpust  detete  esindex& # 39; s 日期(yyyy-MM-dd)“;   ,exit  0   fi   indexfile=esindex.info   cp  -f /dev/null  $ {indexfile}   curl  & # 39; $ {esUrl}/_cat指数# 39;,在祝辞,$ {indexfile}   日志文件=esindex_del. ' date  +“% m - % d"“.out   cp  -f /dev/null  ${日志文件}   for  item 拷贝的cat  $ {indexfile}, |, awk  & # 39; {print  3美元}& # 39;”   做   if 才能;[,“item"美元,=,“error",)   然后才能   ,才能继续   fi才能   参数才能=$ {esUrl}/${项}   indexdate才能=${项目:0:10}   if 才能;[,“indexdate"美元,=,“deleteDate"美元;,)   然后才能   ,,,curl  -XDELETE  ${参数},在祝辞,${日志文件}   ,,,echo  - - - - - - - - - - - - ${项},在祝辞,${日志文件}   ,,sleep  5   elif 才能;[[,“indexdate"美元,& lt;,“deleteDate"美元;,]]   然后才能   ,,,curl  -XDELETE  ${参数},在祝辞,${日志文件}   ,,,echo  - - - - - - - - - - - - ${项},在祝辞,${日志文件}   ,,sleep  5   fi才能   做

使用shell脚本怎么批量删除es索引