同步一个表,可以参考我的上一篇 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. 20169207《Linux内核原理与分析》第六周作业

    这周的作业同样分为两部分,第一部分的学习MOOC第四节[扒开系统调用的三层皮],并结合实验楼的实验四深入学习.第二部分阅读学习教材「Linux内核设计与实现 (Linux Kernel Develop ...

  2. noip第2课资料

  3. 微信小程序-bindtap事件与冒泡

    bindtap就是点击事件 在.wxml文件绑定: <text id='textId' data-userXxx='100' bindtap='tapMessage'>cilck here ...

  4. SRM484

    又Orz了一发rng_58.. 250pt: 题意:给定一种兔子数:当S(x*x) = S(x)*S(x)时,x为兔子数,其中S(x)表示各个数位之和. 思路:本来想了一个复杂度很高的想法..然后想看 ...

  5. 4.动态HTML处理和机器图像识别

    Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上, ...

  6. jwt身份认证

    项目地址:https://github.com/cuongle/WebApi.Jwt

  7. zeppelin中运行spark streaming kakfa & 实时可视化

    notebook方式运行spark程序是一种比较agile的方式,一方面可以体验像spark-shell那样repl的便捷,同时可以借助notebook的作图能力实现快速数据可视化,非常方便快速验证和 ...

  8. C# Argument 'picture' must be a picture that can be used as an Icon

    Scenario: 创建了一个WinForm的小程序,希望将它显示在任务栏,所以在工具栏中的“公共控件”里,拖入NotifyIcon控件—notifyIcon1,这个是程序运行任务栏右侧通知区域图标显 ...

  9. 未能加载文件或程序集,PublicKeyToken=“**********”,或它的某一个依赖项。强名称验证失败。

    就是这种错误.这种错误怎么办? 以下步骤: (以上图dll为例) 1.看项目的Debug文件夹下是否有以下三个文件 2.看项目的.csproj文件下引用的报错dll的publickeytoken和版本 ...

  10. Unity 屏幕外死亡的敌人的分数显示在屏幕内

    在敌人死亡后,会出现分数,如果敌人死亡的位置在屏幕内,那么使得获得的分数显示在屏幕内,超出屏幕范围的,显示在屏幕外 当然,这里例子是使得场景中的物体显示在屏幕内,当然也可以使用纯粹的UGUI物体的显示 ...