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

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

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

發(fā)現(xiàn)elasticsearch集群的狀態(tài)是red,unassign的分片數(shù)很多,看了下都是些舊的日期的索引(應該是定時任務刪除失敗導致的)。

curl -XGET ip:port/_cat/shards | grep UNASSIGNED

數(shù)量有幾百個,寫個腳本處理下,先恢復成green。red狀態(tài)好像會影響索引創(chuàng)建和數(shù)據(jù)遷移

先把需要刪除的索引導出到文件

curl -XGET ip:port/_cat/shards | grep UNASSIGNED >> needDelIndex.txt

確認下要刪除的索引列表。沒問題就執(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

因為我們的索引是按天創(chuàng)建的,索引名前綴是yyyy-MM-dd, 保留一段時間后需要批量刪除。shell的第一個參數(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)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

您可能感興趣的文章:
  • shell中如何批量注釋和取消注釋
  • shell腳本實現(xiàn)統(tǒng)計文件大小、批量創(chuàng)建用戶的示例
  • shell腳本批量復制及執(zhí)行命令的示例詳解
  • 使用Shell腳本批量啟停Docker服務
  • shell腳本實現(xiàn)ssh-copy-id批量自動發(fā)送公鑰到遠程主機
  • shell批量curl接口腳本的簡單實現(xiàn)方法
  • 詳解Shell 命令行批量處理圖片文件名的實例
  • 如何使用shell在多服務器上批量操作

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

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