2015-04-17 54 views
4

大多數ElasticSearch文檔討論通過REST API處理索引 - 是否有任何理由不能簡單地從磁盤移動或刪除索引文件夾?通過索引文件夾備份,刪除和恢復Elasticsearch索引

+1

我知道這是舊的,我對聚會有點晚了,但你應該使用API​​而不是直接使用文件系統的一個原因是因爲Elastic Search經常作爲一個集羣與多臺機器一起運行,並且具有數據碎片。因此很難獲得涉及許多機器的索引的一致備份。 API處理這個問題,並且意味着由許多機器組成的集羣以這樣一種方式進行編排,即您可以正確備份數據。 – Belogix

回答

4

您可以在磁盤上遷移數據,到一個點 -

如果Elasticsearch正在運行,這是從來沒有移動或刪除索引 文件夾是一個好主意,因爲Elasticsearch不知道發生了什麼數據,並且在您手動刪除它們之前, 將獲得各種日誌中的FileNotFoundExceptions以及紅色的索引 。

如果Elasticsearch沒有運行,你可以移動索引文件夾到另一個節點( 例如,如果你是永久decomissioning一個節點,並得到 數據從需要)但是,如果刪除或文件夾移動到Elasticsearch在服務重新啓動時無法看到的地方,那麼Elasticsearch 將會不高興。這是因爲Elasticsearch將所謂的 羣集狀態寫入磁盤,並且在此羣集狀態下記錄索引,因此如果 ES啓動並且預計會找到索引「foo」,但您已刪除「foo」 索引目錄中,索引將保持紅色狀態,直到通過 REST API刪除。

因爲這樣,我會建議,如果要移動或刪除磁盤個體 索引的文件夾,您使用REST API只要有可能,因爲它是 可能得到ES爲不愉快的狀態,如果你刪除它預計 找到一個索引文件夾

編輯:我應該指出,它是安全的,從Elasticsearch的角度備份(備份)的索引文件夾, ,因爲它不修改 內容文件夾。有時候人們會這樣做,以執行恢復API之外的快照 &之外的備份。

5

我使用這個程序:我關閉,備份,然後刪除索引。

curl -XPOST "http://127.0.0.1:9200/*index_name*/_close" 

在此之後,所有索引數據都在磁盤上並處於一致狀態,且無法寫入。我複製存儲索引的目錄,然後刪除它:

curl -XPOST "http://127.0.0.1:9200/*index_name*/_delete" 

通過關閉索引,elasticsearch停止對索引的所有訪問。然後我發送一條命令刪除索引(以及磁盤上的所有相應文件)。