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
要升級Elasticsearch 1.x集羣,有兩個選項:工具
升級基於時間的索引
若是你使用基於時間的索引,你可能不須要將以前的5.x索引向前推動到6.x,基於時間的索引中的數據一般會隨着時間的推移而變得不那麼有用,而且隨着它們的時間期限超過你的保留期而被刪除。ui
除非你的保留期很是長,不然你能夠等待升級到6.x,直到你全部的前5.x索引都被刪除。code
用reindex API手動從新索引你的舊索引:htm
refresh_interval
設置爲-1
,而且number_of_replicas
設置爲0
,以實現高效的從新索引。refresh_interval
和number_of_replicas
重置爲舊索引中使用的值。green
。在單個更新別名請求中:索引
遷移援助和升級工具
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.html。rem
你可使用reindex從遠程將索引從舊集羣遷移到新的6.x集羣,這使你能夠在不中斷服務的狀況下將以前的5.6集羣遷移到6.x。
Elasticsearch提供向後兼容支持,能夠將之前的主要版本的索引升級到當前的主要版本,跳過主要版本意味着你必須本身解決全部向後兼容性問題。
要遷移你的索引:
在舊集羣旁邊設置一個新的6.x集羣,經過將舊集羣添加到elasticsearch.yml
中的reindex.remote.whitelist
,使其可以訪問舊集羣:
reindex.remote.whitelist: oldhost:9200
新的集羣沒必要徹底擴展,當你遷移索引並將負載轉移到新集羣時,你能夠向新集羣添加節點,並從舊集羣中刪除節點。
對於須要遷移到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_interval
和number_of_replicas
設置爲所需的值(默認設置是30s
和1
)。green
,你就能夠刪除舊索引。