ES 集群間遷移數據(一)

在實際使用 Elasticsearch 集群的過程中,可能會遇到需要實驗新版本的特性或者對集群中的數據進行垂直拆分,在這個過程中,就需要將原有集群中的數據搬到新的集群中,Elasticsearch 為此提供了:

  • snapshot / restore
  • reindex

以上兩種方式,這裡主要介紹第二種 reindex 的方式。

這裡主要使用官方出品的工具:curator 進行相關的操作。

這裡先給出 reindex 的基本配置:

註:curator 的配置文件是 YAML 格式。

使用 curator 通過 Reindex 的方式,核心部分的配置是 8 - 18 行。

  • request_body 由 source 和 dest 兩部分構成
    • source 是指定 Elasticsearch 源集群,主要配置源集群的地址信息,以及 Reindex 所使用的源索引,這裡 REINDEX_SELECTION 是一個特殊的佔位符,表示的是通過 remote_filters 過濾器過濾之後得到的源索引名字。
    • dest 是指定在目標 Elasticsearch 進行 Reindex 操作後,創建的索引的名字。這裡 MIGRATION 也是一個特殊的佔位符,它表示的是,在目標集群中創建的索引名字是,如下格式的:

註:migration_prefix 和 migration_suffiex 可以在 yaml 文件進行配置,migration_prefix | Curator Reference [5.1] | Elastic, migration_suffix | Curator Reference [5.1] | Elastic

當 migration_prefix 和 migration_suffix 都為空字元串時,dest_index_name 就完全和 source_index_name 一致了,這樣在實際執行操作的時候,就省去了每次都要去指定 dest_index_name 的時間。

  • remote_filters 是用於在源集群中,過濾出需要的源索引,以便進行後續的操作,過濾出來的源索引,在配置中使用 REINDEX_SELECTION 進行替換。

通過一份相對簡單的配置,就可以完成日常的集群間的數據遷移。

更完整的配置,參見:github.com/fatelei/es-o

推薦閱讀:

使用ElasticSearch搭建日誌系統
學習elasticsearch必須先學習lucene嗎?
Elasticsearch到底能玩多大的數據量?

TAG:Elasticsearch | Linux运维 |