如果您需要将源端ES中的角色、用户或可视化大盘的相关信息复制到目标端ES中使用,可以通过手动备份和恢复快照的方式实现。
前提条件
已开通对象存储 OSS(Object Storage Service),并新建一个标准存储类型的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的仓库,请参见创建快照仓库。源端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控制台不能关闭这些索引,建议通过终端操作。具体操作,请参见通过命令行连接集群。
关闭目标端系统索引
.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的仓库,请参见创建快照仓库。源端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控制台不能关闭系统索引,建议通过终端操作。具体操作,请参见通过命令行连接集群。
关闭目标端系统索引
.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