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