如果您需要将自建、云上自建或云上Elasticsearch(简称ES)中的全量或增量数据迁移至阿里云ES Serverless中,可通过Logstash的管道配置功能实现。本文介绍在ECS上自建Logstash,并通过该Logstash将源端ES中的数据全量迁移至目标阿里云ES Serverless。
注意事项
自建Logstash需要能够同时访问源端ES集群和目标ES Serverless应用。
本文使用的ECS为CentOS操作系统。
操作步骤
步骤一:安装自建Logstash
-
连接ECS服务器。
具体操作请参见 通过密码或密钥认证登录Linux实例 。
说明本文档以普通用户权限为例。
-
安装自建Logstash。
执行以下命令,下载Logstash软件安装包并解压。
cd ~ sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.2-linux-x86_64.tar.gz sudo tar -zvxf logstash-7.10.2-linux-x86_64.tar.gz
-
将部署自建Logstash所在的ECS实例的公网或私网IP地址加入到源端ES和目标Serverless应用中。
具体操作,请参见 配置Serverless应用公网或私网访问 。
步骤二:全量迁移数据
-
连接ECS服务器。
具体操作请参见 通过密码或密钥认证登录Linux实例 。
-
在config目录下,创建并打开Logstash配置文件。
cd logstash-7.10.2/config sudo vi es2es_all.conf
-
参考以下配置,修改Logstash配置文件。
说明为了保证迁移数据的准确性,建议您创建多个Logstash管道配置文件,分批次迁移数据,每个Logstash迁移部分数据。
input{ elasticsearch{ # 源端ES地址。 hosts => ["http://localhost:9200"] # 安全集群配置登录用户名密码。 user => "xxxx" password => "xxxxxx" # 需要迁移的索引列表,多个索引以英文以逗号(,)分隔。 index => ["kibana_sample_data_*"] # 以下三项保持默认即可,包含线程数和迁移数据大小和Logstash JVM配置相关。 docinfo=>true slices => 5 size => 5000 filter { # 去掉一些Logstash自己加的字段。 mutate { remove_field => ["@timestamp", "@version"] output{ elasticsearch{ # 目标端Serverless应用公网访问地址,可在应用详情页面获取。 hosts => ["http://****.public.hangzhou.es-serverless.aliyuncs.com:9200"] # 应用的用户名和密码。 user => "xxxx" password => "xxxxxx" # 目标端索引名称,以下配置表示索引与源端保持一致。 index => "%{[@metadata][_index]}" # 目标端索引type,以下配置表示索引类型与源端保持一致。 document_type => "%{[@metadata][_type]}" # 目标端数据的id,如果不需要保留原id,可以删除以下这行,删除后性能会更好。 document_id => "%{[@metadata][_id]}" ilm_enabled => false manage_template => false }
-
进入Logstash目录。
cd ~/logstash-7.10.2
-
启动Logstash全量迁移任务。
说明如果无法上传数据,可以通过
tail -f es2serverless.log
查看失败原因。sudo nohup bin/logstash -f config/es2es_all.conf >es2serverless.log 2>&1 &
步骤三:查看数据迁移结果
-
登录Elasticsearch Serverless应用的Kibana控制台。
具体操作,请参见 通过Kibana使用Serverless应用 。
-
在Kibana页面的左上角,选择
。 -
在Console控制台执行以下代码,查看Serverless应用的索引和数据量信息,查看数据是否完成全量迁移。
GET _cat/indices?v
常见问题
Q:为什么迁移前后数据的格式不一致?
A:在进行数据迁移时,Logstash会帮助您自动创建索引,但是自动创建的索引可能与您待迁移的索引存在差异,导致迁移前后数据的格式不一致。建议您在数据迁移前,在目标ES Serverless应用中手动创建目标索引,确保迁移前后索引数据完全一致。具体操作,请参见 迁移索引元数据(设置和映射) 。