一、場景
筆者最近在寫全文搜索引擎服務,用到的是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中了