利用別名切換索引流程Elasticsearch 7.7

背景

公司裏面現在有es集羣,由於時間過長,es集羣中的某個索引過大但是未刪除,一直在寫入的情況下,昨天寫入突然停止了,發現是索引超時的問題,這時想到通過創建一個新的索引來進行索引切換

操作

es 集羣中舊索引的名稱爲testlogs,準備新建一個索引userlogs5,通過別名進行切換,前提是數據是通過別名來進行寫入索引的,如果沒有別名需要提前創建。

具體操作步驟如下:

  1. 查看當前別名對應的索引
curl -s -X GET "http://localhost:9200/_cat/aliases"
userlogs_alias testlogs - - - -

現在需要新建一個userlogs5,替換掉testlogs ,因爲testlogs 索引過大,導致讀取速度慢

  1. 新建userlogs5 索引
curl -s -X PUT "http://localhost:9200/testlogs?pretty" -H 'Content-Type: application/json' -d '{    
  "settings": {
    "index.number_of_shards": 10,
    "index.number_of_replicas": 1
    }
  }'

  1. 查詢新建的userlogs5 的 索引和分片

curl -s -X GET "http://localhost:9200/_cat/indices?v" |grep userlogs5

curl -s -X GET "http://localhost:9200/_cat/shards?v" |grep userlogs5 

  1. 給userlogs5 添加上索引別名

curl -s -X PUT "http://localhost:9200/testlogs/_alias/userlogs_alias"

curl -s -X GET "http://localhost:9200/_cat/aliases"

這裏會有兩個索引對應userlogs_alias, 分別是舊索引和上面新建的索引

  1. 刪除舊索引的別名,讓別名只對應新的索引,完成索引切換
curl -s -X DELETE "http://localhost:9200/testlogs/_alias/userlogs_alias"


  1. 查詢新索引狀態是否正常,是否可以寫入數據既可
curl -s -X GET "http://localhost:9200/_cat/indices?v" |grep userlogs5
curl -s -X GET "http://localhost:9200/_cat/shards?v" |grep userlogs5 

  1. 以上就完成了索引切換的過程

總結

索引切換完成之後,數據會通過新的索引寫入,不會影響正常數據,後面如果需要查詢索引,可以使用curl 命令查詢舊的索引既可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章