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

背景

公司裏面如今有es集羣,因爲時間過長,es集羣中的某個索引過大可是未刪除,一直在寫入的狀況下,昨天寫入忽然中止了,發現是索引超時的問題,這時想到經過建立一個新的索引來進行索引切換json

操做

es 集羣中舊索引的名稱爲testlogs,準備新建一個索引userlogs5,經過別名進行切換,前提是數據是經過別名來進行寫入索引的,若是沒有別名須要提早建立。app

具體操做步驟以下:curl

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

如今須要新建一個userlogs5,替換掉testlogs ,由於testlogs 索引過大,致使讀取速度慢url

  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, 分別是舊索引和上面新建的索引code

  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 命令查詢舊的索引既可。索引

相關文章
相關標籤/搜索