利用kettle Spoon从oracle或mysql定时增量更新数据到Elasticsearch

https://blog.csdn.net/jin110502116/article/details/79690483

背景:

目前的业务数据数据已经很大了,关于查询内的需求比较多,传统数据库已经不能满足目前的需要。必须得使用全文检索了,了解了相关资料,发现Elasticsearch这个工具比较强大。于是就开始新一段的爬坑之旅了...

Elasticsearch安装什么的很方便,但是更新却是个很大的问题。开始尝试了Logstash这个工具,各种尝试后,还是放弃了。主要原因是速度慢,数据源是oracle数据库的时候,不能增量更新,生成的索引文档id各种问题,果断放弃...

后面尝试了Kettle spoon,换了n多个版本,都没有找到一个跟Elasticsearch兼容的比较好的版本。查了n多资料,发现没一个能够说清楚解决思路的。自己也想过放弃,但项目上有刚需,只得硬着头皮弄了。功夫不负有心人,终于成功了...

分享:

写在前面:第一篇博客,不喜勿喷哈。之前一直潜水,这次想奉献一下~

目的:将mysql或oracle里面的数据定时增量抽取到ES。

思路:利用spoon发送http post请求,然后获取索引中最大的时间,然后将数据库中查出大于该时间的记录,定时导入到ES即可。(还有一种常见的是,将每种类型的数据更新完后,存入到一张管理表总,下次抽取大于这个时间的)

工具下载链接:

Spoon 7.1修复版本:链接:https://pan.baidu.com/s/1bPAjMWt_ur7BqPI6zkkE4g 密码:v1li

Elasticsearch2.3.2 : 链接:https://pan.baidu.com/s/1FlyvCCSjEIqZJB1F59qkzg 密码:w49r

Elasticsearch-head : 链接:https://pan.baidu.com/s/1pCf9e-WH3N9b5JFSMFPpAg 密码:1959

方案步骤(举例):

1、新建索引,设置分片数,备份数

2、新建索引类型(举个例子)

注意:需要使用统计功能的字段类型不能设置为String

请求地址:http://localhost:9200/gj_index/tx_type/_mapping/

请求类型:put

请求参数:

{

"tx_type": {

"properties": {

"ZBY": {

"type": "double"

},

"ZBX": {

"type": "double"

},

"DZ": {

"type": "string",

"index":"not_analyzed" //ES不分析这个字段,这样只能进行精确查询

},

"IMSI": {

"type": "string"

},

"TMSI": {

"type": "string"

},

"IMEI": {

"type": "string"

},

"JLSJ": {

"type": "long" //时间戳,不能使用String,否则无法统计。这边转成了秒

},

"SBID": {

"type": "string"

},

"LAC": {

"type": "string"

}

}

}}

截图如下:

3、先模拟请求,找到索引中某类型(testtype)中最大的时间字段(endtime),如图所示:

4、新建Spoon转换、任务

获取到索引中最大的时间戳(模拟请求,获取该索引中endtime最大的那个值)

a、整体效果图:



b、设置请求参数





c、发送post请求

    d、获取当前类型中最大的时间



新建插入索引转换,将大于此时间的记录获取到,直接插入到ES中

a、整体效果图



b、表输入

    ![img_name](https://img-blog.csdn.net/20180325212824535)

    c、插入到索引





新建定时任务,定时增量抽取数据

a、 每隔5秒执行一次增量更新任务



b、设置job变量 maxjlsl



c、添加转换(获取索引中最大时间)

d、取得转换任务中的最大时间,更新到 maxjlsj

e、添加转换(插入数据到ES)

点击运行,大功告成 ...

oracle或mysql定时增量更新索引数据到Elasticsearch的更多相关文章

  1. oracle至mysql该指南的数据模式()任意数据源之间的跨导应用

    为了产生的一些资源的库的释放.需要API模块迁移到mysql在,需要引导数据. 试用oracle to mysql工具.当迁移错误不说,如此大量的数据的,有了这样简陋的工具是不太可靠. 意外的发现工具 ...

  2. Centos 6.5 实战-MySQL定时增量备份(2)

    首先在进行增量备份之前需要查看一下配置文件,查看 log_bin 是否开启,因为要做增量备份首先要开启 log_bin .首先,进入到 myslq 命令行,输入如下命令: [root@localhos ...

  3. 实战-MySQL定时增量备份(2)

    概要 引言 增量备份 恢复增量备份 定时备份 引言 在产品上线之后,我们的数据是相当重要的,容不得半点闪失,应该做好万全的准备,搞不好哪一天被黑客入侵或者恶意删除,那就 gg 了.所以要对我们的线上数 ...

  4. Oracle与Mysql插入多行数据

    Oracle 一. insert allinto students values ('b10050501','zl')into students values ('b10050502','zjw')s ...

  5. linux下mysql定时备份,数据保存周期一周

    以下脚本来自网络,版权归原作者所有(推荐放在夜间自动备份,用cron制定计划任务) crontab -e 0 3 * * * /var/erp/data/mysql_backup.sh #!/bin/ ...

  6. Oracle to MySQL Goldengate实现增量迁移

    第一部分:安装和基本配置 一.环境 两台rhel 6.4虚拟机,分别异构oracle到mysql数据库同步测试Ip:192.168.0.23 部署oracle 11.2.0.4,goldgate 12 ...

  7. 用solr DIH 实现mysql 数据定时,增量同步到solr

    基础环境: (二)设置增量导入为定时执行的任务: 很多人利用Windows计划任务,或者Linux的Cron来定期访问增量导入的连接来完成定时增量导入的功能,这其实也是可以的,而且应该没什么问题. 但 ...

  8. mysql定时脚本(event),类似oracle的job

    mysql定时脚本(event),类似oracle的job   我有2张表:tb_push_data 和 tb_push_data_log 现在需要每隔一段时间将tb_push_data 符合条件的 ...

  9. Canal - 数据同步 - 阿里巴巴 MySQL binlog 增量订阅&消费组件

    背景 早期,阿里巴巴 B2B 公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求 ,主要是基于trigger的方式获取增量变更.从 2010 年开始,公司开始逐步尝试数据库日志解析,获取增量变 ...

随机推荐

  1. Ganglia监控安装配置

    172.17.20.123 node1 gmetad.gmond.web 172.17.20.124 node2 gmond 1.服务器安装好epel源后,安装ganglia yum install ...

  2. ASP.NET HttpHandler加水印

    一.指定Handler方式 1.添加Handler一般处理程序 2.PicHandler.ashx源码如下: 需要的引用: using System; using System.Collections ...

  3. HTML5+ MUI实现ajax的一个demo

    index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  4. QP之QEP原理

    1.QP简介: 量子平台(Quantum Platform, 简称QP)是一个用于实时嵌入式系统的软件框架,QP是轻量级的.开源的.基于层次式状态机的.事件驱动的平台. QP包括事件处理器(QEP). ...

  5. python学习——函数

     一.在python的世界里什么是函数: 答:函数通常是用来实现某一个功能二被封装成的一个对象,是用来实现代码复用的常用方式 现在有一个需求,假如你在不知道len()方法的情况下,要你计算字符串‘he ...

  6. unity独立游戏开发日志2018/09/26

    最近太忙,今天吃饭的时候灵感一现...想到了随机地图生成的方法,不过可能实现的比较笨...还需要优化,大佬绕过. 注释没打,最后统一解释. using System.Collections; usin ...

  7. HDU暑假多校第八场J-Taotao Picks Apples

    一.题意 给定一个序列,之后给出若干个修改,修改的内容为在原序列的基础上,将某一位元素的值改成给定的值<每次修改相互独立,不保存修改后的结果>.之后询问,在选择第一位元素的情况下,最长递增 ...

  8. Java8新特性(一)——Lambda表达式与函数式接口

    一.Java8新特性概述 1.Lambda 表达式 2. 函数式接口 3. 方法引用与构造器引用 4. Stream API 5. 接口中的默认方法与静态方法 6. 新时间日期 API 7. 其他新特 ...

  9. Scala Tuple

    Python中的Tuple 元组将多样的对象集合到一起,元素不能修改,通过索引进行查找, 使用括号"()" 允许重复 Scala中的Tuple 概念跟Python是完全相同的 定义 ...

  10. mysql用命令创建用户创建数据库设置权限

     1.create database bbs; //创建数据库 2.create user bbs IDENTIFIED by 'bbs';  //创建用户bbs和登录密码bbs 3.grant AL ...