如果您需要將源端ES中的角色、使用者或可視化大盤的相關資訊複製到目標端ES中使用,可以通過手動備份和恢複快照的方式實現。
前提條件
已開通Object Storage Service (OSS),並建立一個標準儲存類型的Bucket,且Bucket的地區與ES執行個體的地區保持一致。具體操作,請參見開通OSS服務和建立儲存空間。
建立2個阿里雲ES執行個體。一個ES作為源端,一個ES作為目標端,ES不同版本之間恢複快照的相容性,請參見Index compatibility。
說明8.x和7.x版本ES快照恢複有差異,本文以7.10版本ES執行個體之間的恢複和8.5版本ES執行個體之間的恢複為例。
ES不同版本之間恢複快照的相容性,請參見Index compatibility。
注意事項
本文中的代碼均可以在阿里雲ES執行個體的Kibana控制台上執行。
在ES 8.0及以上版本中,features是備份和恢複系統索引和系統資料流的唯一方式。詳細資料,請參見Snapshot and restore。
遷移Elasticsearch角色和使用者
步驟一:準備環境
在源端ES執行個體中登入Kibana控制台。具體操作,請參見登入Kibana控制台。
建立角色
cj_test_role和一個使用者kara,並為該使用者指派cj_test_role角色。具體操作,請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控。
步驟二:備份快照資料
登入源端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台。
在源端ES執行個體中建立一個名稱為
my_backup的倉庫。雲上叢集建立倉庫。
PUT _snapshot/my_backup/ { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "xxxx", "secret_access_key": "xxxxxx", "bucket": "xxxxxx", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }8.x版本自建叢集建立倉庫,需要安裝elasticsearch-repository-oss外掛程式。具體操作,請參見安裝elasticsearch-repository-oss外掛程式。
說明關於該外掛程式的詳細資料,請參見elasticsearch-repository-oss。
PUT /_snapshot/my_backup { "type": "oss", "settings": { "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com", "oss.client.access_key_id": "xxx", "oss.client.secret_access_key": "xxx", "oss.client.bucket": "xxxxxx", "oss.client.base_path":"snapshot/", "oss.client.compress": true } }
參數
說明
endpoint
OSS Bucket的內網訪問網域名稱。擷取方式,請參見訪問網域名稱和資料中心。
access_key_id
用於標識使用者。擷取方式,請參見擷取AccessKey。
secret_access_key
用於驗證使用者的密鑰。擷取方式,請參見擷取AccessKey。
bucket
OSS Bucket的名稱,需要一個已經存在的Bucket。擷取方式,請參見控制台建立儲存空間。
compress
開啟快照檔案的壓縮功能:
true:開啟壓縮功能,僅應用於中繼資料檔案(索引映射和設定)。
false(預設值):不開啟壓縮功能,資料檔案未壓縮。
chunk_size
當您上傳的資料非常大時,配置此參數可以限制快照過程中分塊的大小。超過這個大小,資料將會被分塊上傳到OSS中。
base_path
倉庫的起始位置,預設為根目錄。可以指定具體快照的存放目錄,例如snapshot/myindex/。
源端ES執行個體中建立快照。
執行如下命令,在ES 7.10版本執行個體中建立快照
snapshot_1。說明ES 7.10版本角色、使用者通過系統索引
.kibana*,.security*管理。ES 7.10版本建立快照命令中參數解析,請參見Restore snapshot API。
PUT _snapshot/my_backup/snapshot_1 { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": true }執行如下命令,在ES 8.5版本執行個體中為角色和使用者相關的索引建立快照
snapshot_1。說明ES 8.5版本建立快照命令中參數解析,請參見Create snapshot API。
PUT _snapshot/my_backup/snapshot_1 { "indices": "-*", "ignore_unavailable": true, "include_global_state": true, "feature_states": [ "security" ] }
確認成功建立快照。例如,執行如下命令,擷取
my_backup倉庫中快照snapshot_1的詳細資料。GET _snapshot/my_backup/snapshot_1
步驟三:恢複快照資料
登入目標端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台。
在目標端ES執行個體中建立一個名稱為
my_restore的倉庫。PUT _snapshot/my_restore { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }將源端ES執行個體中的快照恢複到目標端ES執行個體中。
ES為7.10版本,在目標端進行如下操作恢複快照。
說明7.10及以下版本在恢複快照前需要先關閉目標端的系統索引
.kibana*和.security*,並在恢複快照後儘快開啟被關閉的系統索引。關閉系統索引可能會導致Elasticsearch執行個體功能不可用或受限。例如,關閉
.kibana可能導致Kibana無法使用;關閉.security可能導致安全功能受限。建議您提前備份資料,以便在需要時進行恢複。
建議在目標端ES的業務低峰期或停止服務時操作。
如果Kibana控制台不能關閉這些索引,建議通過終端操作。具體操作,請參見管理Elasticsearch的curl命令。
關閉目標端系統索引
.kibana*和.security*。POST /<index name>/_close恢複源端快照。
POST /_snapshot/my_restore/snapshot_1/_restore { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": false }開啟目標端系統索引
.kibana*和.security*。POST /<index name>/_open
ES為8.5版本,在目標端執行如下代碼恢複快照
snapshot_1。POST _snapshot/my_restore/snapshot_1/_restore { "feature_states": [ "security" ], "include_global_state": false, "indices": "-*" }
驗證角色和使用者是否遷移成功。
在頁面左上方,選擇 。
在左側功能表列,選擇,可以看到已經將源端中角色為
cj_test_role的使用者kara恢複到了目標端ES上。
遷移kibana可視化大盤
步驟一:準備環境
在源端ES執行個體中登入Kibana控制台。具體操作,請參見登入Kibana控制台。
添加範例資料。
說明以下操作步驟以ES 8.5版本為例,其他版本操作略有不同,以控制台為準。
在Kibana首頁,通過添加整合開始使用地區單擊試用範例資料。
在範例資料頁簽,單擊其他範例資料集。
單擊Sample flight data資料集下的添加資料。
待添加資料變為查看資料時,表示該資料集已添加完成。添加範例資料後,Kibana會自動建立一些相關的可視化。

在Kibana控制台左上方,選擇 ,在可視化大盤中查看已存在的可視化,例如【航班】到達地天氣、【航班】延誤與取消等。
步驟二:備份快照資料
登入源端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台。
在源端ES執行個體中建立一個名稱為
my_backup的倉庫。雲上叢集建立倉庫。
PUT _snapshot/my_backup/ { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "xxxx", "secret_access_key": "xxxxxx", "bucket": "xxxxxx", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }8.x版本自建叢集建立倉庫,需要安裝elasticsearch-repository-oss外掛程式。具體操作,請參見安裝elasticsearch-repository-oss外掛程式。
說明關於該外掛程式的詳細資料,請參見elasticsearch-repository-oss。
PUT /_snapshot/my_backup { "type": "oss", "settings": { "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com", "oss.client.access_key_id": "xxx", "oss.client.secret_access_key": "xxx", "oss.client.bucket": "xxxxxx", "oss.client.base_path":"snapshot/", "oss.client.compress": true } }
參數
說明
endpoint
OSS Bucket的內網訪問網域名稱。擷取方式,請參見訪問網域名稱和資料中心。
access_key_id
用於標識使用者。擷取方式,請參見擷取AccessKey。
secret_access_key
用於驗證使用者的密鑰。擷取方式,請參見擷取AccessKey。
bucket
OSS Bucket的名稱,需要一個已經存在的Bucket。擷取方式,請參見控制台建立儲存空間。
compress
開啟快照檔案的壓縮功能:
true:開啟壓縮功能,僅應用於中繼資料檔案(索引映射和設定)。
false(預設值):不開啟壓縮功能,資料檔案未壓縮。
chunk_size
當您上傳的資料非常大時,配置此參數可以限制快照過程中分塊的大小。超過這個大小,資料將會被分塊上傳到OSS中。
base_path
倉庫的起始位置,預設為根目錄。可以指定具體快照的存放目錄,例如snapshot/myindex/。
源端ES執行個體中建立快照。
執行如下命令,在ES 7.10版本執行個體中建立快照
snapshot_2。說明ES 7.10版本建立快照命令中參數解析,請參見Restore snapshot API。
PUT _snapshot/my_backup/snapshot_2 { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": true }執行如下命令,在ES 8.5版本執行個體中為可視化大盤相關的索引建立快照
snapshot_2。說明ES 8.5版本建立快照命令中參數解析,請參見Create snapshot API。
PUT _snapshot/my_backup/snapshot_2 { "indices": "-*", "ignore_unavailable": true, "include_global_state": true, "feature_states": [ "security","kibana" ]
確認成功建立快照。例如,執行如下命令,擷取
my_backup倉庫中快照snapshot_2的詳細資料。GET _snapshot/my_backup/snapshot_2
步驟三:恢複快照資料
登入目標端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台。
在目標端ES執行個體中建立一個名稱為
my_restore的倉庫。PUT _snapshot/my_restore { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }將源端ES執行個體中的快照恢複到目標端ES執行個體中。
ES為7.10版本,在目標端進行如下操作恢複快照。
說明7.10及以下版本在恢複快照前需要先關閉目標端的系統索引
.kibana*和.security*,並在恢複快照後儘快開啟被關閉的系統索引。關閉系統索引可能會導致Elasticsearch執行個體功能不可用或受限。例如,關閉
.kibana可能導致Kibana無法使用;關閉.security可能導致安全功能受限。建議您提前備份資料,以便在需要時進行恢複。
建議在目標端ES的業務低峰期或停止服務時操作。
如果Kibana控制台不能關閉系統索引,建議通過終端操作。具體操作,請參見管理Elasticsearch的curl命令。
關閉目標端系統索引
.kibana*和.security*。POST /<index name>/_close恢複源端快照。
POST /_snapshot/my_restore/snapshot_2/_restore { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": false }開啟目標端系統索引
.kibana*和.security*。POST /<index name>/_open
ES為8.5版本,在目標端執行如下代碼恢複快照
snapshot_2。POST _snapshot/my_restore/snapshot_2/_restore { "feature_states": [ "security","kibana" ], "include_global_state": false, "indices": "-*" }
驗證可視化大盤是否遷移成功。
在頁面左上方,選擇 ,查看從源端複用到目標端的可視化。
> Management > Stack Management