【Java】Win10 Kettle Spoon 抽MySQL数据到本地ES[二]

语言: CN / TW / HK

主页: 写程序的小王叔叔的博客欢迎来访
支持: 点赞​收藏​关注
社区: JAVA全栈进阶学习社区欢迎加入

一、实现的具体步骤及效果

1.1 首先通过es-head创建es的查询索引

1.2 mysql选择测试表,并进行增加相应测试数据

1.3 然后通过kettle spoon 进行转换,生成及作业设置

1.4 kettle spoon 成功连接 es

1.5 kettle spoon 进行推送到es中,并在kibana中进行查看

二、背景理论

由于项目业务数据量背景,进行实时备份,跟中,分析数据的走势,数据量增大导致MySQL访问速度变慢,因此通过kkettle spoon 将MySQL中的数据定时抽取,并保存到es中。

要求:

本地分别安装kettle spoon9.0+ elk 6.8.13(es es-head kibana),安装方法在本博客中均可以找到

spoon :(原)Windows10 数据库管理工具 Kettle Spoon的安装 使用【一】_写程序的小王叔叔的博客-CSDN博客

elk : (原) Elastic系列 → windows10 安装 Elasticsearch + Kibana + Logstash【一】_写程序的小王叔叔的博客-CSDN博客

三、操作方法

3.1 创建索引:

参考博客:ElasticSearch 6.1.1--Head插件添加索引及其添加,修改,删除文档_指尖de柔情的博客-CSDN博客_elasticsearch head 删除索引

​ 

3.2 建立映射

解释:http://localhost:9200/search-to-es-log/search_to_log/

search-to-es-log : 之前创建索引的名称

search_to_log : 给指定索引中创建的测试字段集合

注意:mapping properties之间层级与关系不能错

​ 

四、kettle spoon连接MySQL 抽数据,插入ES

4.1 kettle 连接 mysql

基本配置见 本博主 博客 : (原)Windows10 数据库管理工具 Kettle Spoon的安装 使用【一】_写程序的小王叔叔的博客-CSDN博客

4.2 编写sql

4.3 kettle进行测试

4.4 kettle 往es 中写 数据

业务解释:将抽取后的数据进行写入es中

kettle 写入数据时提示错误:分别创建 写入的过程,并执行

​编辑

4.4.1 - 字段属性中有 【 Timestamp 】 情况时,kettle 进行设置:

4.4.1.1 设置数据库连接的属性: zeroDateTimeBehavior \= convertToNull

4.4.1.2 - 设置 时间格式类型

4.4.2 - 抽取数据时,遇到存在数据 为 null 时,将 字段通过 “替换NULL值”进行格式化,

见地址:Kettle案例十五:替换NULL值 - 简书

4.4.3 - 写入完成后,自动多出一条全部为NULL的数据情况,

4.5. ES显示数据

补充!Kettle Spoon 测试 连接 ES

5.1)spoon中 选择“核心对象-生成记录”,在记录中进行设置测试的响应字段(当前字段和3.2中预设置字段统一)

5.2)spoon中,在“核心对象-批量加载”中,找到 elasticsearch build insert功能,进行设置

问题:spoon 请求 localhost 本机es时,提示如下问题: Elasticsearch bulk insert.0 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : NoNodeAvailableException[None of the configured nodes are available:

解决

NoNodeAvailableException[None of the configured nodes are available

可能的原因

1、项目引用的 ES 版本和 Kettle Spoon版本不一样;【本地是这种情况】:

由于本地kettle spoon版本是9.0+,es版本7.3+,由于7.3+版本问题多,并且提示版本不适配,因此这里选择降低es的基础版本,选择官网整套elk版本:6.8.13

ELK 6.8.13 : 官网下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

2、端口不正确,tcp访问端口是9300;【问题很少出现】

3、cluster.name不正确,可以通过访问http://localhost:9200/查看ES服务下的cluster.name;【问题很少出现】

4、ES服务没启动;【问题很少出现&&超级低级错误】

根据上面的【1】,我这里重新修改版本,重新配置elk.

​ 

版本修改成功后,kettle 连接 es 成功,如图:

问题解决后,进行设置“elasticeseartch bulk insert”的 general 、 servers 、 fields 、 settings,如图:

​ ​ 

五、效果

六、操作

2.1)创建索引通过谷歌浏览器的es-head插件创建即可

下载地址:es-head谷歌浏览器插件20210420.zip-系统安全文档类资源-CSDN下载

2.1)es-head 配置成功后,进行创建索引:参考文章:(原) Elastic系列 → 通过es-head创建索引 【一】

2.2)通过postman客户端工具进行es索引参数创建

以上是自己整理的,并测试过,可以直接用

参考博客:

使用spoon(kettle)工具抽取Elasticsearch的数据并入库_zhyingvip的博客-CSDN博客_kettle读取elasticsearch

2.数据仓库-kettle抽取Mysql数据_吾我的博客-CSDN博客_kettle抽取mysql

kettle详解(数据抽取、转换、装载)_JueDream的博客-CSDN博客_kettle 数据类型

以上是自己整理的,并测试过,可以直接用

转载声明:本文为博主原创文章,未经博主允许不得转载

⚠️注意 ~

💯本期内容就结束了,如果内容有误,麻烦大家评论区指出

如有疑问❓可以在评论区留言💬或私信留言💬,尽我最大能力🏃‍♀️帮大家解决👨‍🏫!

如果我的文章有帮助,欢迎点赞+关注✔️鼓励博主🏃,您的鼓励是我分享的动力🏃🏃🏃~