logstash是一個非常強大的數據遷移工具。這里主要記錄今天使用到的幾個簡單用法。
其中比較需要注意的是 遷移到elasticsearch的時候,output 的 elasticsearch 中的 mappings 最好自己建。雖然不自己建立logstash會自動建立,但是自動建立出來的mappings里面有些參數可能就不是我們預期想要的,導致再查詢的時候出現問題。這個地方不要偷懶。
首先配置 conf文件。
(1)elasticsearch遷移到elasticsearch
input { elasticsearch { hosts => ["172.19.165.221"] index => "v3_19q3_detail_hotel" size => 200 scroll => "1m" } } filter { } output { elasticsearch { hosts => ["127.0.0.1"] index => "v4_hotel" } }
(2)es保存到file
input { elasticsearch { hosts => ["172.19.165.221"] index => "v3_19q3_detail_hotel" size => 100 scroll => "1m" } } filter { } output { file { path => "F:/hotel/v4.json" } }
保存json文件中數據像這樣:
每一行都是一個json串。保存下來的文件一般會很大,一般的編輯器打不開,個人用VS Code打開的(因為只需要從中拿幾條數據就行了)
(3)file到es
input { file { path => "F:/hotel/v203.json" start_position => "beginning" #設置編碼 codec => json {charset => "UTF-8"} } } filter { } output { elasticsearch { hosts => ["127.0.0.1"] index => "v4_hotel" } }
conf文件配置完成后執行logstash,參照以下:
bin/logstash -f es-es.conf
根據個人情況需要做修改。
需要注意的一個情況是,file到es 的情況,執行一次logstash 后,logstash似乎會緩存已經執行的數據,做第二次執行如果文件中沒有數據改變時不會入庫的。
參考博客:
https://blog.csdn.net/weixin_34268610/article/details/85072470
https://www.cnblogs.com/yaoqingyuan/p/7293909.html
https://blog.csdn.net/alan_liuyue/article/details/92635108


