文档

通过Logstash将ES数据迁移至阿里云ES Serverless

更新时间:

如果您需要将自建、云上自建或云上Elasticsearch(简称ES)中的全量或增量数据迁移至阿里云ES Serverless中,可通过Logstash的管道配置功能实现。本文介绍在ECS上自建Logstash,并通过该Logstash将源端ES中的数据全量迁移至目标阿里云ES Serverless。

注意事项

自建Logstash需要能够同时访问源端ES集群和目标ES Serverless应用。

说明

本文使用的ECS为CentOS操作系统。

操作步骤

步骤一:安装自建Logstash

  1. 连接ECS服务器。

    具体操作请参见通过密码或密钥认证登录Linux实例

    说明

    本文档以普通用户权限为例。

  2. 安装自建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
  3. 将部署自建Logstash所在的ECS实例的公网或私网IP地址加入到源端ES和目标Serverless应用中。

    具体操作,请参见配置Serverless应用公网或私网访问

步骤二:全量迁移数据

  1. 连接ECS服务器。

    具体操作请参见通过密码或密钥认证登录Linux实例

  2. 在config目录下,创建并打开Logstash配置文件。

    cd logstash-7.10.2/config
    sudo vi es2es_all.conf
  3. 参考以下配置,修改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
        }
    }
  4. 进入Logstash目录。

    cd ~/logstash-7.10.2
  5. 启动Logstash全量迁移任务。

    说明

    如果无法上传数据,可以通过tail -f es2serverless.log查看失败原因。

    sudo nohup bin/logstash -f config/es2es_all.conf >es2serverless.log 2>&1 &

步骤三:查看数据迁移结果

  1. 登录Elasticsearch Serverless应用的Kibana控制台。

    具体操作,请参见通过Kibana使用Serverless应用

  2. 在Kibana页面的左上角,选择Management > Dev Tools

  3. 在Console控制台执行以下代码,查看Serverless应用的索引和数据量信息,查看数据是否完成全量迁移。

    GET _cat/indices?v

常见问题

Q:为什么迁移前后数据的格式不一致?

A:在进行数据迁移时,Logstash会帮助您自动创建索引,但是自动创建的索引可能与您待迁移的索引存在差异,导致迁移前后数据的格式不一致。建议您在数据迁移前,在目标ES Serverless应用中手动创建目标索引,确保迁移前后索引数据完全一致。具体操作,请参见迁移索引元数据(设置和映射)

  • 本页导读 (1)
文档反馈