通過Logstash將ES數(shù)據(jù)遷移至阿里云ES Serverless
如果您需要將自建、云上自建或云上Elasticsearch(簡稱ES)中的全量或增量數(shù)據(jù)遷移至阿里云ES Serverless中,可通過Logstash的管道配置功能實(shí)現(xiàn)。本文介紹在ECS上自建Logstash,并通過該Logstash將源端ES中的數(shù)據(jù)全量遷移至目標(biāo)阿里云ES Serverless。
注意事項(xiàng)
自建Logstash需要能夠同時(shí)訪問源端ES集群和目標(biāo)ES Serverless應(yīng)用。
本文使用的ECS為CentOS操作系統(tǒng)。
操作步驟
步驟一:安裝自建Logstash
連接ECS服務(wù)器。
具體操作請(qǐng)參見通過密碼或密鑰認(rèn)證登錄Linux實(shí)例。
說明本文檔以普通用戶權(quán)限為例。
安裝自建Logstash。
執(zhí)行以下命令,下載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實(shí)例的公網(wǎng)或私網(wǎng)IP地址加入到源端ES和目標(biāo)Serverless應(yīng)用中。
具體操作,請(qǐng)參見配置Serverless應(yīng)用公網(wǎng)或私網(wǎng)訪問。
步驟二:全量遷移數(shù)據(jù)
連接ECS服務(wù)器。
具體操作請(qǐng)參見通過密碼或密鑰認(rèn)證登錄Linux實(shí)例。
在config目錄下,創(chuàng)建并打開Logstash配置文件。
cd logstash-7.10.2/config sudo vi es2es_all.conf
參考以下配置,修改Logstash配置文件。
說明為了保證遷移數(shù)據(jù)的準(zhǔn)確性,建議您創(chuàng)建多個(gè)Logstash管道配置文件,分批次遷移數(shù)據(jù),每個(gè)Logstash遷移部分?jǐn)?shù)據(jù)。
input{ elasticsearch{ # 源端ES地址。 hosts => ["http://localhost:9200"] # 安全集群配置登錄用戶名密碼。 user => "xxxx" password => "xxxxxx" # 需要遷移的索引列表,多個(gè)索引以英文以逗號(hào)(,)分隔。 index => ["kibana_sample_data_*"] # 以下三項(xiàng)保持默認(rèn)即可,包含線程數(shù)和遷移數(shù)據(jù)大小和Logstash JVM配置相關(guān)。 docinfo=>true slices => 5 size => 5000 } } filter { # 去掉一些Logstash自己加的字段。 mutate { remove_field => ["@timestamp", "@version"] } } output{ elasticsearch{ # 目標(biāo)端Serverless應(yīng)用公網(wǎng)訪問地址,可在應(yīng)用詳情頁面獲取。 hosts => ["http://****.public.hangzhou.es-serverless.aliyuncs.com:9200"] # 應(yīng)用的用戶名和密碼。 user => "xxxx" password => "xxxxxx" # 目標(biāo)端索引名稱,以下配置表示索引與源端保持一致。 index => "%{[@metadata][_index]}" # 目標(biāo)端索引type,以下配置表示索引類型與源端保持一致。 document_type => "%{[@metadata][_type]}" # 目標(biāo)端數(shù)據(jù)的id,如果不需要保留原id,可以刪除以下這行,刪除后性能會(huì)更好。 document_id => "%{[@metadata][_id]}" ilm_enabled => false manage_template => false } }
進(jìn)入Logstash目錄。
cd ~/logstash-7.10.2
啟動(dòng)Logstash全量遷移任務(wù)。
說明如果無法上傳數(shù)據(jù),可以通過
tail -f es2serverless.log
查看失敗原因。sudo nohup bin/logstash -f config/es2es_all.conf >es2serverless.log 2>&1 &
步驟三:查看數(shù)據(jù)遷移結(jié)果
登錄Elasticsearch Serverless應(yīng)用的Kibana控制臺(tái)。
具體操作,請(qǐng)參見通過Kibana使用Serverless應(yīng)用。
在Kibana頁面的左上角,選擇
。在Console控制臺(tái)執(zhí)行以下代碼,查看Serverless應(yīng)用的索引和數(shù)據(jù)量信息,查看數(shù)據(jù)是否完成全量遷移。
GET _cat/indices?v
常見問題
Q:為什么遷移前后數(shù)據(jù)的格式不一致?
A:在進(jìn)行數(shù)據(jù)遷移時(shí),Logstash會(huì)幫助您自動(dòng)創(chuàng)建索引,但是自動(dòng)創(chuàng)建的索引可能與您待遷移的索引存在差異,導(dǎo)致遷移前后數(shù)據(jù)的格式不一致。建議您在數(shù)據(jù)遷移前,在目標(biāo)ES Serverless應(yīng)用中手動(dòng)創(chuàng)建目標(biāo)索引,確保遷移前后索引數(shù)據(jù)完全一致。具體操作,請(qǐng)參見遷移索引元數(shù)據(jù)(設(shè)置和映射)。