logstash数据迁移

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文件中数据像这样:

image

每一行都是一个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

 


 

posted @ 2019-11-29 15:57  yeren2046  阅读(1533)  评论(0编辑  收藏  举报