【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 : 官網下載地址:http://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 資料型別

以上是自己整理的,並測試過,可以直接用

轉載宣告:本文為博主原創文章,未經博主允許不得轉載

⚠️注意 ~

💯本期內容就結束了,如果內容有誤,麻煩大家評論區指出

如有疑問❓可以在評論區留言💬或私信留言💬,盡我最大能力🏃‍♀️幫大家解決👨‍🏫!

如果我的文章有幫助,歡迎點贊+關注✔️鼓勵博主🏃,您的鼓勵是我分享的動力🏃🏃🏃~