input {
# 多张表的同步只需要设置多个jdbc的模块就行了
jdbc {
# mysql 数据库链接,shop为数据库名
jdbc_connection_string => "jdbc:mysql://localhost:3306/porject?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "root"
# 驱动
jdbc_driver_library => "D:\JAVAKaiFaPeiZhi\logstash-7.17.0-windows-x86_64\logstash-5.5.0\mysql\mysql-connector-java-8.0.17.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
#是否分页
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#直接执行sql语句
statement =>"
SELECT fd.id fdId,fd.`img_url` fdImgUrl,fd.`remark` fdRemark,fd.`deal_time` fdDealTime,fd.`user_id` fdUserId,fd.user_name fdUserName,fd.track_id trackId,fd.`img_url_uuid` imgUrlUuid,
ft.id ftId, ft.`fault_content` faContent,ft.`fault_time` ftTime,ft.equipment_name ftEquipmentName,ft.`remark` ftRemark,ft.`user_id` ftUserId,ft.`user_name` ftUserName,ft.`project_id` ftProjectId,ft.`project_name` ftProjectName
,ft.status ftStatus,ft.work_flow_instance_id ftWorkFlowInstanceId,ft.audit_remark ftAuditRemark,ft.repair_time repairTime,ft.`liable_id` ftLiableId,ft.`liable_name` ftLiableName,ft.`enable` ftEnable
FROM t_fault_track ft
LEFT JOIN t_fault_deal fd
ON ft.`id`=fd.`track_id`
"
# 执行的sql 文件路径+名称
#statement_filepath => "/usr/local/logstash-6.6.0/mysql/item.sql"
# 默认列名转换为小写
lowercase_column_names => "false"
#设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
# 索引类型
#type => "jdbc"
}
}
output {
elasticsearch {
#es的ip和端口
hosts => ["http://localhost:9200"]
#ES索引名称(自己定义的)
index => "t_fault"
#文档类型
document_type => "t_fault"
#设置数据的id为数据库中的字段
document_id => "%{ftId}"
}
stdout {
codec => json_lines
}
}