同步一个表,可以参考我的上一篇 logstash-jdbc-input与mysql数据库同步

同步多个表的做法,跟一个表类似,唯一不同的是 .conf 文件中的配置

在这里我加了一个脚本文件jdbc-seckill.sql,是为了查询第二个表的数据(其实也可以不要此文件,而是直接将sql写在 .conf文件中)

SELECT seckill_id id, name, number, create_time
FROM seckill
WHERE number > :number

这里我增加了一个查询条件,传值的方式,可在下面的配置文件中看到有个parameters

接下来,我们直接看配置文件:

input {
jdbc {
jdbc_connection_string => "jdbc:mysql://dev.yonyouccs.com:3001/test"
jdbc_user => "root"
jdbc_password => "root"
jdbc_driver_library => "D:/software/logstash-6.2.2/logstash-6.2.2/mysql/mysql-connector-java-5.1.40.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => ""
statement_filepath => "D:/software/logstash-6.2.2/logstash-6.2.2/mysql/jdbc.sql"
schedule => "* * * * *"
type => "user"
}
jdbc {
jdbc_connection_string => "jdbc:mysql://dev.yonyouccs.com:3001/test"
jdbc_user => "root"
jdbc_password => "root"
jdbc_driver_library => "D:/software/logstash-6.2.2/logstash-6.2.2/mysql/mysql-connector-java-5.1.40.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => ""
parameters => {"number" => ""}
statement_filepath => "D:/software/logstash-6.2.2/logstash-6.2.2/mysql/jdbc-seckill.sql"
schedule => "* * * * *"
type => "kill"
}
} filter {
json {
source => "message"
remove_field => ["message"]
}
} output {
if[type] == "user" {
elasticsearch {
hosts => ["localhost:9200"]
index => "index_user"
document_id => "%{id}"
}
}
if[type] == "kill" {
elasticsearch {
hosts => ["localhost:9200"]
index => "index_kill"
document_id => "%{id}"
}
}
stdout {
codec => json_lines
}
}

可以看到在input下,我们又新增了一个jdbc。在jdbc中,我们新增了一个属性type,用来在output中做判断

在output中,我们没有传document_type,并且还使用了两个index。这是因为在elasticsearch6.0中,一个索引下只能有一个类型,不然会报错。这里我们可

参考ElasticSearch 6.0新特性介绍

同样的,我们使用cmd执行命令:logstash -f ../mysql/mysql.conf

执行了两个sql脚本,其中那个带where条件的sql参数也传进去了

我们再来看elasticsearch-head中的数据:

新增了两个索引index_kill、index_user。同时,每个索引下还有一个虚拟索引doc

踩过的坑

1、配置文件中,当在input的jdbc下,增加type属性时,会导致该索引下增加type字段。所以sql查询出的字段不要用type,如果有,as成其他的名字,不然的话,这里判断会有异常

2、同步多个表,elasticsearch6.0以上的版本,一定要设置多个索引

logstash-input-jdbc同时同步多个表的更多相关文章

  1. logstash input jdbc连接数据库

    示例 以下配置能够实现从 SQL Server 数据库中查询数据,并增量式的把数据库记录导入到 ES 中. 1. 查询的 SQL 语句在 statement_filepath => " ...

  2. 使用 Logstash 和 JDBC 确保 Elasticsearch 与关系型数据库保持同步

    为了充分利用 Elasticsearch 提供的强大搜索功能,很多公司都会在既有关系型数据库的基础上再部署Elasticsearch.在这种情况下,很可能需要确保 Elasticsearch 与所关联 ...

  3. Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)

    一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...

  4. 使用logstash同步Mysql数据表到ES的一点感悟

    针对单独一个数据表而言,大致可以分如下两种情况: 1.该数据表中有一个根据当前时间戳更新的字段,此时监控的是这个时间戳字段 具体可以看这个文章:https://www.cnblogs.com/sand ...

  5. 官方使用logstash同步Mysql数据表到ES的摘抄

    官方文档地址:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#plugins-inputs-jdbc ...

  6. 使用logstash同步mysql 多表数据到ElasticSearch实践

    参考样式即可,具体使用配置参数根据实际情况而定 input { jdbc { jdbc_connection_string => "jdbc:mysql://localhost/数据库 ...

  7. Logstash使用jdbc同步MySQL中的数据

    [--26T20::,][WARN ][logstash.inputs.jdbc ] Exception when executing JDBC query {:exception=>#< ...

  8. (三)ELK logstash input

    一,input模块 input 插件官方详解: https://www.elastic.co/guide/en/logstash/current/input-plugins.html Logstash ...

  9. 通过jdbc获取数据库中的表结构

    通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类   1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等.Met ...

随机推荐

  1. WebGIS博客文本分析(词频分析)手动扒取 去除格式 词语分割 统计分析

    1.      [置顶](一)开篇—杂谈WebGIS 摘要: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 ...

  2. (树形dp)鸡毛信问题 (fzu 1227)

    http://acm.fzu.edu.cn/problem.php?pid=1227   Problem Description 大革命时期,地下党组织的联络图是一个树状结构.每个党员只和一个比他高一 ...

  3. War Chess (hdu 3345)

    http://acm.hdu.edu.cn/showproblem.php?pid=3345 Problem Description War chess is hh's favorite game:I ...

  4. 18:description方法

    本小节知识点: [掌握]description基本概念 [掌握]description重写的方法 [了解]description陷阱 1.description基本概念 NSLog(@"%@ ...

  5. Scala_控制结构

    控制结构 if条件表达式  val x = 6  if (x>0){    println("This is a positive number") }else if(x== ...

  6. js五道经典练习题--第一道

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  7. Chubby是什么?

    先简单的理解,以后补充: 为了解决hadoop分布式系统的一致性问题 ,有很多人提出很多protocol,其中就有有名的Paxos算法(Latex作者提出,算法需要学习), 但是Chubby并不是一个 ...

  8. OS基础:动态链接库(一)

    动态链接库(一) 1.新建文件夹,命名lpt 2.用vc6.0建立一个空工程(Win 32 Dynamic-Link Library),名称:lptDll1 3.新建C++文件,命名:lptDll1: ...

  9. 在mac下配置Andriod环境 包括eclipse和andriod studio

    1 前提 已经配置好了java的环境,课上要使用andriod开发. 2 步骤 2.1 eclipse 2.1.1先安装adt,adt是一个在eclipse中开发andriod的插件.由于墙,我是从其 ...

  10. Linux安全之SYN攻击原理及其应对措施

    TCP自从1974年被发明出来之后,历经30多年发展,目前成为最重要的互联网基础协议,但TCP协议中也存在一些缺陷. SYN攻击就是利用TCP协议的缺陷,来导致系统服务停止正常的响应. SYN攻击原理 ...