今天小编就为大家分享一篇关于壳脚本批量删除萨尔瓦多索引的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
发现弹性搜索集群的状态是红色,取消分配的分片数很多,看了下都是些旧的日期的索引(应该是定时任务删除失败导致的)。
curl-XGET IP:port/_ cat/shards | grep未分配
数量有几百个,写个脚本处理下,先恢复成绿色.红色状态好像会影响索引创建和数据迁移
先把需要删除的索引导出到文件
curl-XGET IP:port/_ cat/shards | grep UNASSIGNED needde index。文本文件(textfile)
确认下要删除的索引列表。没问题就执行下面删除外壳(es的互联网协议(互联网协议的缩写)和端口需要修改下)
#!/bin/bash
回显' $1 '
esUrl=${esip}:${esport}
indexfile=needDelIndex.txt
#cp -f /dev/null ${indexfile}
# curl-XGET IP:port/_ cat/shards | grep UNASSIGNED needde index。文本文件(textfile)
如果[!-f ./$ {索引文件}];然后
echo $indexfile不存在
出口0
船方不负担装货费用
日志文件=esindex _ del。日期“% m-% d”.
cp -f /dev/null ${logfile}
lastIndexName='test '
对于"目录$ {索引文件} | awk"{打印$ 1 } "中的项目
做
if [ '$item'='error' ]
然后
继续
船方不负担装货费用
if [ '$item '!='$lastIndexName' ]
然后
curl-XDELETE $ { esUrl }/$ { item } $ { log file }
echo - ${item} `date` ${logfile}
睡眠5
船方不负担装货费用
lastIndexName=${item}
完成的
因为我们的索引是按天创建的,索引名前缀是年-月-日保留一段时间后需要批量删除贝壳。的第一个参数为年-月-日将删除该天及以前的旧索引
#!/bin/bash
esUrl=${esip}:${esport}
回显' $1 '
if [ $# -ge 1 ]
然后
删除日期=$1
其他
回声”请输入日期(yyyy-MM-dd)"
出口0
船方不负担装货费用
索引文件=ESI索引。信息
cp -f /dev/null ${indexfile}
curl ' $ { esUrl }/_ cat/indexes ' $ { indexfile }
logfile=esindex_del,日期' % m-% d ' out .
cp -f /dev/null ${logfile}
对于"目录$ {索引文件} | awk"{打印$ 3 } "中的项目
做
if [ '$item'='error' ]
然后
继续
船方不负担装货费用
parameter=${esUrl}/${item}
indexdate=${item:0:10}
if [ '$indexdate'='$deleteDate' ]
然后
curl-XDELETE $ { parameter } $ { log file }
echo - ${item} ${logfile}
睡眠5
elif[[' $索引日期' ' $删除日期']]
然后
curl-XDELETE $ { parameter } $ { log file }
echo - ${item} ${logfile}
睡眠5
船方不负担装货费用
完成的
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。