實現MySQL數據同步到ElasticSearch中

一、場景

筆者最近在寫全文搜索引擎服務,用到的是ElasticSearch框架,該篇博客就如何實現MySQL數據同步到ES中進行闡述


二、解決方案

運行系統:mac系統下

採用到的技術:ES2.4、logstash-2.4.1

用到的相關插件:ES-head、logstash-input-jdbc、logstash-output-elasticsearch

其安裝該篇博客就不多做闡述。

讀者安裝完以上的相關插件後,進入logstash-2.4.1目錄下,創建config文件夾,在config文件夾下創建logstash-mysql.conf並下載mysql-connector-java-5.1.39.jar包如圖(還有:再創建個logs目錄,來放日誌)

logstash-mysql.conf中的內容如下

input {
  jdbc {
    jdbc_driver_library => "./config/mysql-connector-java-5.1.39.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # 數據庫相關配置
    jdbc_connection_string => "jdbc:mysql://localhost:3306/wcspider?characterEncoding=UTF-8&useSSL=false"
    jdbc_user => "root"
    jdbc_password => "1111"
    statement => "SELECT * FROM shiyuemami limit 0,1"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
    schedule => "* * * * *"
  }
}

filter {
   json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    hosts => "localhost"
    #將mysql數據加入myindex索引下,會自動創建
    index => "myindex"
  }        
} 

完成後,記得啓動es : brew services start [email protected]

然後進入logstash-2.4.1目錄下:輸入命令:nohup bin/logstash -f config/logstash-mysql.conf > logs/logstash.out &

如果要停止該文件運行,可以直接kill掉進程,進程號會在執行上面的命令時打印出來

可以看到logs目錄下生成logstash.out

打開logstash.out會看到同步到es的相關數據

打開http://localhost:9200/_plugin/head/,可以看到數據已經同步到es中了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章