Elasticsearch mysql 增量同步
2016-05-13 14:36
543 查看
主要用到了一个 JDBC importer for Elasticsearch的库。
想要增量同步,有一些先决条件。首先数据库中要维护一个update_time的时间戳,这个字段表示了该记录的最后更新时间。然后用上面的那个库,定时执行一个任务,这个任务中执行的sql就是根据时间戳判断该记录是否应该被更新。
这里先写一个最简单的例子来展示一下。
从上方插件官网中下载适合的dist包,然后解压。进入bin目录,可以看到一堆sh脚本。在bin目录下创建一个test.sh:
schedule现在设置成每分钟都执行一次,是为了方便观察行为。statefile这一句是一定要加的。$metrics.lastexecutionstart就是这个脚本的关键所在了,这个指的是上一次脚本执行的时间,可以通过比较这个时间和数据库里的字段来判断是否要更新。
想要增量同步,有一些先决条件。首先数据库中要维护一个update_time的时间戳,这个字段表示了该记录的最后更新时间。然后用上面的那个库,定时执行一个任务,这个任务中执行的sql就是根据时间戳判断该记录是否应该被更新。
这里先写一个最简单的例子来展示一下。
从上方插件官网中下载适合的dist包,然后解压。进入bin目录,可以看到一堆sh脚本。在bin目录下创建一个test.sh:
bin=/home/csonezp/Dev/elasticsearch-jdbc-2.3.1.0/bin lib=/home/csonezp/Dev/elasticsearch-jdbc-2.3.1.0/lib echo '{ "type" : "jdbc", "statefile" : "statefile.json", "jdbc": { "url" : "jdbc:mysql://myaddr", "user" : "myuser", "password" : "mypwd", "type" : "mytype", "index": "myindex", "schedule" : "0 * * * * ?", "metrics" : { "enabled" : true }, "sql" : [ { "statement" : "select * from gd_actor_info where update_time > ?", "parameter" : [ "$metrics.lastexecutionstart" ] } ] } }' | java \ -cp "${lib}/*" \ -Dlog4j.configurationFile=${bin}/log4j2.xml \ org.xbib.tools.Runner \ org.xbib.tools.JDBCImporter
schedule现在设置成每分钟都执行一次,是为了方便观察行为。statefile这一句是一定要加的。$metrics.lastexecutionstart就是这个脚本的关键所在了,这个指的是上一次脚本执行的时间,可以通过比较这个时间和数据库里的字段来判断是否要更新。
相关文章推荐
- MYSQL必知必会读书笔记 第二十六章 管理事务处理
- MySQL索引注意的几个地方
- 本地msdos(cmd)下输入mysql命令提示:‘mysql’不是内部或外部命令,也不是可运行的程序或批处理文件
- MySQL性能优化二十大实战经验
- ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
- 第二章 mybatis使用注解实现in查询(mysql)
- MYSQL必知必会读书笔记 第二十五章 使用触发器
- Host 'XXX' is not allowed to connect to this MySQL server 解决方案
- mysql报错【1248】处理
- SQL Server如何链接远程MySQL
- MySQL5日期类型DATETIME和TIMESTAMP相关问题详解
- 修改mysql root账号密码
- MySQL字符串函数:字符串截取
- [MySQL]经常无故崩溃amd.dll , boot1.exe病毒
- MySQLのデータベースをmysqldumpでバックアップ/復元する方法
- Mysql 远程连接数据库 设置
- (MYSQL) Unknown table 'a' in MULTI DELETE的解决办法
- 在MYSQL语法中使用trim函数删除两侧字符
- MySQL主从同步原理 部署【转】
- mysql主配置文件my.cnf详细说明