經過logstash-input-mongodb插件將mongodb數據導入ElasticSearch

  目的很簡單,就是將mongodb數據導入es創建相應索引。數據是從特定的網站扒下來,而後進行二次處理,也就是數據去重、清洗,接着再保存到mongodb裏,那麼如何將數據搞到ElasticSearch中呢?調研以後以爲logstash-input-mongodb插件是個不錯的選擇,固然了也有不少其餘實現方式,具體緣由:git

  • 爬蟲在實時存儲數據,須要進行實時同步到ElasticSearch中
  • 支持斷點續傳
  • 時間成本...

首先介紹下版本(5.0以上)

  • logstash 5.X
  • elasticsearch 5.X
  • logstash-input-mongodb-0.4.1(在線更新過

接下來就是實際操做了

  這是插件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"
    }
}
View Code

啓動:

bin/logstash -f logstash.conf
#後臺啓動:
nohup  bin/logstash -f logstash.conf &>/var/log/null &
相關文章
相關標籤/搜索