2017-03-02 230 views
1

將elasticsearch從1.7升級到5.2的正確方法是什麼?elasticsearch從1.7.x升級到5.2.x

我試着先將它升級到2.4版,並完成reindex程序,然後我安裝了elasticsearch v.5.2。當v.5.2在日誌開始看到這個消息:

3)錯誤噴射構造,java.lang.IllegalStateException:本 指數[[logstash-2017年1月15日/ TK1-FBLGTQGl0vVW1xxPpg]用 創建版本[1.7.3],但最小兼容版本是[2.0.0-beta1]。 在升級到 之前,應該在Elasticsearch 2.x中重新編制索引。5.2.2。

+0

你如何做reindex? – yershalom

+0

我使用了兩個查詢:'curl -XPOST'http:// localhost:9200/_reindex' to reindex like like this article [link](https://www.elastic.co/guide/en/elasticsearch/reference/current /docs-reindex.html),然後我刪除舊的索引。 –

回答

1

望着official documentation,如果您運行的是Elasticsearch 1.x的集羣,你有兩個選擇:

  • 先升級到Elasticsearch的2.4.x,重新編制的舊索引,然後再升級到5 。X。
  • 創建一個新的5.x羣集,並使用reindex-from-remote直接從1.x羣集導入索引。

Reindex in place

重新索引老(1.x中)指標到位的最簡單方法是使用Elasticsearch遷移插件。您需要先升級到Elasticsearch 2.3.x或2.4.x。

在遷移插件提供的重新索引實用程序執行以下操作:

  • 創建具有附加到舊的索引名稱Elasticsearch版本的新索引(例如my_index-2.4.1),複製映射和設置從舊的索引。新索引上的刷新處於禁用狀態,對於高效重新索引,副本數量設置爲0。
  • 將舊索引設置爲只讀,以確保沒有數據寫入舊索引。
  • 將舊索引中的所有文檔重新索引到新索引。
  • 將refresh_interval和number_of_replicas重置爲舊索引中使用的值,並等待索引變爲綠色。
  • 將舊索引中存在的任何別名添加到新索引。
  • 刪除舊的索引。
  • 向具有舊索引名稱的新索引添加別名,例如,別名my_index指向索引my_index-2.4.1。

在這個過程結束時,您將擁有一個可以被Elasticsearch 5.x集羣使用的新的2.x索引。

Upgrading with reindex-from-remote

如果您運行的是1.x的集羣,並想直接遷移到5.x不先遷移到2.x,你可以這樣做,使用重新索引,從遠程。

您需要在現有的1.x羣集旁邊設置5.x羣集。5.x羣集需要訪問1.x羣集的REST API。

對於要轉移到5.x的羣集中的每個1.x的指標,你 將需要:

  • 在5.x中使用適當的映射和設置創建新的索引。
  • 將refresh_interval設置爲-1,並將number_of_replicas設置爲0以加快重新索引。
  • 使用reindex-from-remote將文檔從1.x索引拖入新的5.x索引。如果您在後臺運行reindex作業(wait_for_completion設置爲false),則reindex請求將返回一個task_id,該task_id可用於監視任務API中reindex作業的進度:GET _tasks/TASK_ID。
  • 一旦reindex完成,將refresh_interval和number_of_replicas設置爲所需的值(默認值分別爲30s和1)。
  • 新索引完成複製後,可以刪除舊索引。