發(fā)現(xiàn)elasticsearch集群的狀態(tài)是red,unassign的分片數(shù)很多,看了下都是些舊的日期的索引(應(yīng)該是定時(shí)任務(wù)刪除失敗導(dǎo)致的)。
curl -XGET ip:port/_cat/shards | grep UNASSIGNED
數(shù)量有幾百個(gè),寫個(gè)腳本處理下,先恢復(fù)成green。red狀態(tài)好像會(huì)影響索引創(chuàng)建和數(shù)據(jù)遷移
先把需要?jiǎng)h除的索引導(dǎo)出到文件
curl -XGET ip:port/_cat/shards | grep UNASSIGNED >> needDelIndex.txt
確認(rèn)下要?jiǎng)h除的索引列表。沒問題就執(zhí)行下面刪除shell(es的ip和端口需要修改下)
#!/bin/bash
echo "$1"
esUrl=${esip}:${esport}
indexfile=needDelIndex.txt
#cp -f /dev/null ${indexfile}
#curl -XGET ip:port/_cat/shards | grep UNASSIGNED >> needDelIndex.txt
if [ ! -f ./${indexfile} ]; then
echo $indexfile not exists
exit 0
fi
logfile=esindex_del.`date +"%m-%d"`.log
cp -f /dev/null ${logfile}
lastIndexName="test"
for item in `cat ${indexfile} | awk '{print $1}'`
do
if [ "$item" = "error" ]
then
continue
fi
if [ "$item" != "$lastIndexName" ]
then
curl -XDELETE ${esUrl}/${item} >> ${logfile}
echo ---------${item} `date` >> ${logfile}
sleep 5
fi
lastIndexName=${item}
done
因?yàn)槲覀兊乃饕前刺靹?chuàng)建的,索引名前綴是yyyy-MM-dd, 保留一段時(shí)間后需要批量刪除。shell的第一個(gè)參數(shù)為yyyy-MM-dd,將刪除該天及以前的舊索引
#!/bin/bash
esUrl=${esip}:${esport}
echo "$1"
if [ $# -ge 1 ]
then
deleteDate=$1
else
echo "please inpust detete esindex's date(yyyy-MM-dd)"
exit 0
fi
indexfile=esindex.info
cp -f /dev/null ${indexfile}
curl '${esUrl}/_cat/indices' >> ${indexfile}
logfile=esindex_del.`date +"%m-%d"`.out
cp -f /dev/null ${logfile}
for item in `cat ${indexfile} | awk '{print $3}'`
do
if [ "$item" = "error" ]
then
continue
fi
parameter=${esUrl}/${item}
indexdate=${item:0:10}
if [ "$indexdate" = "$deleteDate" ]
then
curl -XDELETE ${parameter} >> ${logfile}
echo ---------${item} >> ${logfile}
sleep 5
elif [[ "$indexdate" "$deleteDate" ]]
then
curl -XDELETE ${parameter} >> ${logfile}
echo ---------${item} >> ${logfile}
sleep 5
fi
done
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
您可能感興趣的文章:- shell中如何批量注釋和取消注釋
- shell腳本實(shí)現(xiàn)統(tǒng)計(jì)文件大小、批量創(chuàng)建用戶的示例
- shell腳本批量復(fù)制及執(zhí)行命令的示例詳解
- 使用Shell腳本批量啟停Docker服務(wù)
- shell腳本實(shí)現(xiàn)ssh-copy-id批量自動(dòng)發(fā)送公鑰到遠(yuǎn)程主機(jī)
- shell批量curl接口腳本的簡單實(shí)現(xiàn)方法
- 詳解Shell 命令行批量處理圖片文件名的實(shí)例
- 如何使用shell在多服務(wù)器上批量操作