Elasticsearch 參考指南(升級前從新索引)

升級前從新索引

Elasticsearch能夠讀取上一個主要版本中建立的索引,舊的索引必須從新索引或刪除。Elasticsearch 6.x可使用Elasticsearch 5.x中建立的索引,但不能使用Elasticsearch 2.x或以前建立的索引,Elasticsearch 5.x可使用Elasticsearch 2.x中建立的索引,但不能使用1.x或以前建立的索引。html

若是存在不兼容的索引,Elasticsearch節點將沒法啓動。segmentfault

要升級包含在2.x中建立的索引的Elasticsearch 5.x集羣,必須在升級到6.x以前從新索引或刪除它們。elasticsearch

要升級一個運行2.x的Elasticsearch集羣,有兩個選項:ide

  • 執行完整的集羣重啓升級到5.6,從新索引2.x索引,而後執行滾動升級到6.x,若是你的Elasticsearch 2.x集羣包含在2.x以前建立的索引,那麼你必須在升級到5.6以前刪除或從新索引它們,有關從2.x升級到5.6的更多信息,請參閱Elasticsearch 5.6參考資料中的升級Elasticsearch
  • 建立一個新的6.x集羣,從遠程從新索引,直接從2.x集羣導入索引。

要升級Elasticsearch 1.x集羣,有兩個選項:工具

  • 執行完整的集羣重啓升級到Elasticsearch 2.4.x,並從新索引或刪除1.x索引,而後,執行完整的集羣重啓升級到5.6,從新索引或刪除2.x索引,最後,執行滾動升級到6.x。有關從1.x升級到2.4的更多信息,請參見Elasticsearch 2.4參考資料中的升級Elasticsearch,有關從2.4升級到5.6的更多信息,請參閱Elasticsearch 5.6參考資料中的升級Elasticsearch
  • 建立一個新的6.x集羣,從遠程從新索引,直接從1.x集羣導入索引。

升級基於時間的索引

若是你使用基於時間的索引,你可能不須要將以前的5.x索引向前推動到6.x,基於時間的索引中的數據一般會隨着時間的推移而變得不那麼有用,而且隨着它們的時間期限超過你的保留期而被刪除。ui

除非你的保留期很是長,不然你能夠等待升級到6.x,直到你全部的前5.x索引都被刪除。code

就地從新索引

用reindex API手動從新索引你的舊索引:htm

  1. 建立一個新索引並從舊索引複製映射和設置。
  2. refresh_interval設置爲-1,而且number_of_replicas設置爲0,以實現高效的從新索引。
  3. 使用Reindex API將舊索引中的全部文檔從新索引到新索引。
  4. refresh_intervalnumber_of_replicas重置爲舊索引中使用的值。
  5. 等待索引狀態變爲green
  6. 在單個更新別名請求中:索引

    • 刪除舊索引。
    • 向新索引添加具備舊索引名稱的別名。
    • 將舊索引上存在的任何別名添加到新索引中。

遷移援助和升級工具

X-Pack 5.6提供了遷移援助和升級工具,簡化了從新索引和升級到6.x,這些工具在X-Pack試用版和基本許可中是免費的,你可使用它們來升級,不管X-Pack是否是你的Elastic Stack的一個常規部分,有關更多信息,請參閱http://www.elastic.co/guide/en/elastic-stack/6.4/upgrading-elastic-stack.htmlrem

從遠程集羣從新索引

你可使用reindex從遠程將索引從舊集羣遷移到新的6.x集羣,這使你能夠在不中斷服務的狀況下將以前的5.6集羣遷移到6.x。

Elasticsearch提供向後兼容支持,能夠將之前的主要版本的索引升級到當前的主要版本,跳過主要版本意味着你必須本身解決全部向後兼容性問題。

要遷移你的索引:

  1. 在舊集羣旁邊設置一個新的6.x集羣,經過將舊集羣添加到elasticsearch.yml中的reindex.remote.whitelist,使其可以訪問舊集羣:

    reindex.remote.whitelist: oldhost:9200
    新的集羣沒必要徹底擴展,當你遷移索引並將負載轉移到新集羣時,你能夠向新集羣添加節點,並從舊集羣中刪除節點。
  2. 對於須要遷移到6.x集羣的每一個索引:

    • 用適當的映射和設置在6.x中建立一個新的索引,將refresh_interval設置爲-1,並將number_of_replicas設置爲0,以便更快地從新索引。
    • 從遠程從新索引以將文檔從舊索引拉到新的6.x索引。

      POST _reindex
      {
       "source": {
         "remote": {
           "host": "http://oldhost:9200",
           "username": "user",
           "password": "pass"
         },
         "index": "source",
         "query": {
           "match": {
             "test": "data"
           }
         }
       },
       "dest": {
         "index": "dest"
       }
      }
    • 若是經過將wait_for_completion設置爲false在後臺運行從新索引做業,那麼從新索引請求將返回一個task_id,你可使用task API用來監控從新索引做業的進度:GET _tasks/TASK_ID
    • 當從新索引做業完成時,將refresh_intervalnumber_of_replicas設置爲所需的值(默認設置是30s1)。
    • 一旦複製完成,新索引的狀態爲green,你就能夠刪除舊索引。

下一篇:多索引

相關文章
相關標籤/搜索