目的很简单,就是将mongodb数据导入es创建相应索引。数据是从特定的网站扒下来,而后进行二次处理,也就是数据去重、清洗,接着再保存到mongodb里,那么如何将数据搞到ElasticSearch中呢?调研以后以为logstash-input-mongodb插件是个不错的选择,固然了也有不少其余实现方式,具体缘由:git
这是插件GitHub地址:https://github.com/phutchins/logstash-input-mongodbgithub
进入logstash 下bin目录 查看已安装的插件:mongodb
./logstash-plugin list
没有logstash-input-mongodb插件那么:json
./logstash-plugin install logstash-input-mongodb
此步骤安装比较慢,颇有可能失败,翻过墙另说,哈哈,建议替换镜像库为国内的库。vim
没有gem命令的先安装:ruby
yum install gem
能够先看下镜像库地址命令以下:elasticsearch
gem sources -l
能够看到地址是:https://rubygems.org/ide
如今替换为国内的ruby-china库:网站
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ #在查看 gem sources -l
此时一切换成功,固然,并无完成,须要进入logstash目录对 Gemfile文件 进行编辑:ui
vim Gemfile
将文件里的 source "https://rubygems.org" 换成 source "https://gems.ruby-china.org",如图:
wq保存退出,好了进入bin再执行: ./logstash-plugin install logstash-input-mongodb
等待时间可能比较长,若是没有成功的话,切换镜像源成阿里的 再试一次
gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org #若是以前已经换成国内的须要把将上面的 https://rubygems.org 换成 https://gems.ruby-china.org即: gem sources --add https://ruby.taobao.org/ --remove https://gems.ruby-china.org #而后 vim Gemfile #修改成: source "https://gems.ruby-china.org"
安装成功:
不排除还有失败的可能,能够把logstash-input-mongodb-0.4.1.gem文件下载下来(这里把文件移动到logstash目录下了),执行
./logstash-plugin install logstash-input-mongodb-0.4.1.gem
安装成功:
接下来就是添加logstash配置文件以下:
input { mongodb { uri => 'mongodb://192.168.1.43:27017/testData' placeholder_db_dir => '/opt/logstash-mongodb/' placeholder_db_name =>'testData.db' collection => 'test_Current' } } filter { # 把mongodb的_id替换掉,由于_id是跟es中的_id相冲突 mutate { rename => ["_id", "uid"] } # ruby { # code => "event.set('message', eval(event('title')))" # } } output { file { path => "/var/log/mongons.log" } stdout { codec => json_lines } elasticsearch { hosts => ["192.168.1.171:9200"] index => "testData" manage_template=>true document_type => "judicial" } }
启动:
bin/logstash -f logstash.conf #后台启动: nohup bin/logstash -f logstash.conf &>/var/log/null &