增量更新

input {
jdbc {
jdbc_driver_library => "D:\tools\mysql\mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/canyin?characterEncoding=UTF-8&useSSL=false"
jdbc_user => "root"
jdbc_password => "228151"
statement => "SELECT * FROM goods"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
schedule => "* * * * *"
type => "foods"
record_last_run => true
last_run_metadata_path => ""
clean_run => false }
} filter {
json {
source => "message"
remove_field => ["message"]
}
} output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "127.0.0.1:9200"
index => "goods"
document_type=>"foods"
document_id=>"%{id}"
}
}

增量更新的参数介绍:

input {
stdin { }
jdbc {
# 数据库地址 端口 数据库名
jdbc_connection_string => "jdbc:mysql://localhost:3306/shen"
# 数据库用户名
jdbc_user => "root"
# 数据库密码
jdbc_password => "rootroot"
# mysql java驱动地址
jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-5.1.43-bin.jar"
# 驱动类的名称
jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true"
jdbc_page_size => "50000" #是否记录上次运行的结果
record_last_run => true
#记录上次运行结果的文件位置
last_run_metadata_path => ""
#是否使用数据库某一列的值,
use_column_value => true
tracking_column => "id"
#numeric或者timestamp
tracking_column_type => "numeric" #如果为true则会清除 last_run_metadata_path 的记录,即重新开始同步数据
clean_run => false #sql_last_value根据tracking类型,默认为0或者1970-1-1
statement => "SELECT * FROM TABLE WHERE id > :last_sql_value"
# sql 语句文件,对于复杂的查询,可以放在文件中。
# statement_filepath => "filename.sql"
# 设置监听间隔,语法与Linux系统Cron相同
schedule => "* * * * *"
}
}
output {
stdout {
codec => json_lines
}
   elasticsearch {
hosts => "localhost:9200"
index => "contacts"
     document_type => "contact"
document_id => "%{id}"
}
}

chedule现在设置成每分钟都执行一次,是为了方便观察行为。statefile这一句是一定要加的。$metrics.lastexecutionstart就是这个脚本的关键所在了,这个指的是上一次脚本执行的时间,可以通过比较这个时间和数据库里的字段来判断是否要更新。
参考文献:http://www.cnblogs.com/cocowool/p/mysql_data_to_elasticsearch_via_logstash.html
http://www.cnblogs.com/zhongshengzhen/p/elasticsearch_logstash.html
配置Logstash https://www.elastic.co/guide/en/logstash/current/configuration.html#

第八篇 elasticsearch链接mysql自动更新数据库的更多相关文章

  1. 第七篇 elasticsearch 链接mysql不会更新

    这是我键的索引 "settings":{ "number_of_shards":3, "number_of_replicas":2 }, & ...

  2. 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  3. EntityFrameworkCore使用Migrations自动更新数据库

    EntityFrameworkCore使用Migrations自动更新数据库 系统环境:Win10 IDE:VS2017 RC4 .netcore版本:1.1 一.新建ASP.NET Core Web ...

  4. EF修改model自动更新数据库

    最近用MVC+EF学习时遇到修改model后而数据库没更新报错,就在网上找关于数据迁移自动更新数据库的,折腾了大半天终于弄了出来 第一步:在程序包管理器控制台里: Enable-Migrations ...

  5. day35-hibernate映射 03-Hibernate持久态对象自动更新数据库

    持久态对象一个非常重要的能力:自动更新数据库. package cn.itcast.hibernate3.demo1; import static org.junit.Assert.*; import ...

  6. Code First 下自动更新数据库结构(Automatic Migrations)

    示例 Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> ...

  7. Mysql自动更新字段时间

    Mysql中更新某天数据可设置该条数据中的某个字段自动更新 ALTER TABLE `表名` MODIFY `字段名` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON U ...

  8. EF-使用迁移技术让程序自动更新数据库表结构

    承接上一篇文章:关于类库中EntityFramework之CodeFirst(代码优先)的操作浅析 本篇讲述的是怎么使用迁移技术让程序自动通过ORM框架将模型实体类结构映射到现有数据库,并新增或修改与 ...

  9. hibernate+mysql 自动生成数据库问题

    Hibernate Entity类 表名注解大写时,在windows下mysql自动生成的表都为小写(不区分大小写),在linux下mysql自动生成区分大小写.导致数据库问题. 原因(window下 ...

随机推荐

  1. interface -- 接口类

    <?php /** *为了声明接口,需要使用关键字interface *interface IExampleInterface {} *说明(大多数开发人员选择在节后名称前加上大写字母I作为前缀 ...

  2. 每天一个Linux命令(35)wc命令

          Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出.       (1)用法:     用法:  wc [选项] [文件]. ...

  3. phpmyadmin mysqlnd cannot connect to

    mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administra ...

  4. 如何彻底禁止手机连接usb,代码实…【转】

    本文转载自:https://blog.csdn.net/jun4331247/article/details/51201825 作为系统第三次被黑的修复方法,捯饬了半天,没效果,最后大神一出手,果然出 ...

  5. EntityFramework 学习 一 DBEntityEntry

    DbEntityEntry是一个重要的类,用来获取各种各样的实体信息 可以通过DBContext的Entry方法获取DbEntityEntry的实例 DBEntityEntry studentEntr ...

  6. 算法(Algorithms)第4版 练习 1.5.12

    package com.qiusongde; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; pu ...

  7. SpringCloud-断路器(Hystrix)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用Rest Template + Ribbon和Feign来调用.为了保证其高可用,单 ...

  8. ajax调试小技巧

    在编写ajax时出现了问题,通过myXmlHttpRequest.responseXML无法获取值. 可以尝试打印出responseText的值.截图如下所示:

  9. java:练习学校学生

    java:练习学校学生 一个学生对应一个学校 一个学校对应多个学生 Student类,School类,Demo测试类 Student: public class Student { private S ...

  10. 分享知识-快乐自己:关于 String 小案例

    单个字符出现的次数: /*** * 验证是否符合拆分条件 * * @param text * 原字符串 * @param sub * 判断条件 * @return */ public static i ...