logstash從MySQL導入數據到ES
下載安裝
- 一定要對應ES版本(5.x,6.x,7.x)
- win下不用安裝解壓即用 , 解壓目錄不能帶有空格和中文 , 否則會有奇奇怪怪的報錯無法運行
- win下要給logstash文件夾賦予管理員權限 , 否則執行的時候會讀取不到文件
下載地址:https://github.com/elastic/logstash/releases
![image]()
解壓出來文件夾內容
編寫腳本
- 在mysql2es文件夾中創建腳本 , 方便后續使用修改
- 在mysql2es文件夾中放一個MySQL的驅動jar包 , 后續會使用
input {
jdbc {
# mysql 連接地址
jdbc_connection_string => "jdbc:mysql://10.0.5.167:3306/law?useUnicode=true&characterEncoding=utf-8&useSSL=false"
# 用戶名 密碼
jdbc_user => "1234"
jdbc_password => "4321"
# mysql 驅動jar包的絕對路徑,不要有中文目錄不要有空格
jdbc_driver_library => ".\mysql2es\mysql-connector-java-8.0.20.jar"
# mysql 驅動Class
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 是否開啟分頁 true開啟
jdbc_paging_enabled => "true"
# 分頁大小 10000條一頁
jdbc_page_size => "10000"
# sql語句的配置文件路徑,如果sql語句比較長,那么寫在文件里指定路徑
#statement_filepath => ""
# sql語句 select * 字段就全部添加到ES里了,如果要指定指定字段 select id,name ...
statement => "SELECT * FROM A"
#定時字段 各字段含義(由左至右)分、時、天、月、年,全部為*默認含義為每分鐘都更新(測試結果,不同的話請留言指出)
schedule => "* * * * *"
}
}
output {
elasticsearch {
#ES IP地址與端口
hosts => "esIP地址:端口號"
#ES索引名稱(自己定義的)
index => "xxx"
#自增ID編號 這里是固定語法 %{} 里面寫mysql表那個字段就用那個字段作為ES _id 的值
document_id => "%{id}"
# ES 下的 type
document_type => "xxx"
}
# 控制臺輸出輸入流和輸出流
stdout {
#以JSON格式輸出
codec => json_lines
}
}
從MySQL表中查詢出字段 , 對應ES索引中的結構 , 導入數據
執行腳本
- 用管理員cmd窗口進入logstash下的bin目錄
- 執行命令 logstash -f ../mysql2es/mysql.conf
- 等待執行完畢 , 關閉cmd窗口


浙公網安備 33010602011771號