主頁 > 知識(shí)庫 > shell腳本批量刪除es索引的方法

shell腳本批量刪除es索引的方法

熱門標(biāo)簽:湖北孝感如何辦理 輝縣市地圖標(biāo)注 威海電銷外呼系統(tǒng)好用嗎 地圖標(biāo)注x是啥意思 房產(chǎn)證地圖標(biāo)注的兩個(gè)面積 同花順電話機(jī)器人微信 外呼系統(tǒng)的合法性 北京電銷機(jī)器人對市場的影響 武漢語音電銷機(jī)器人加盟

發(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ù)器上批量操作

標(biāo)簽:麗江 紹興 西寧 迪慶 武威 蚌埠 日喀則 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《shell腳本批量刪除es索引的方法》,本文關(guān)鍵詞  shell,腳本,批量,刪除,索引,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《shell腳本批量刪除es索引的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于shell腳本批量刪除es索引的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章