Elasticsearch學習-----第二章 windows環境下Elasticsearch同步mysql數據庫
在上一章中,我們已經能夠通過spring boot來使用Elasticsearch,但是由於我們習慣性的將數據寫入mysql,所以為了解決這個問題,Elasticsearch為我們提供了一個插件logstash來同步我們的數據庫。本文所有的安裝環境和使用環境都是在windows系統下進行的。
一、logstash的安裝
首先在官網上下載logstash:
logstash下載地址:https://www.elastic.co/downloads/logstash
需要註意的是logstash的版本必須是和你的Elasticsearch版本要一致,比如我使用的Elasticsearch是5.6.8,那麽下載的就是logstash 5.6.8版本。
其次如果使用logstash來同步數據庫,推薦使用Elasticsearch 5.X的版本,因為Elasticsearch 2.X的版本需要我們集成logstash-jdbc-input才能同步數據庫。下載後直接解壓就能使用,解壓後的文件如圖所示。
二、logstash的配置
在安裝完logstash後,我們就可以開始配置我們的數據庫信息了:
第一步:在logstash-5.6.8文件下創建一個空文件夾,文件夾名字可以隨意取,這個文件夾主要用來放mysql的相關配置文件,我這裏創建了一個mysql文件夾:
第二步:在創建的新文件夾中(mysql文件夾)中放入驅動包:mysql-connector-java.jar
這個mysq的驅動包應該都很熟悉,可以在mavn項目的.m2倉庫中拿到,也可以到mavn的官網下載。
第三步:在創建的新文件夾中(mysql文件夾)中創建一個sql文件
從這裏開始,就是logstash同步數據庫的核心操作了,在這裏創建的sql文件主要內容是:mysql需要同步到Elasticsearch的具體數據的查詢方式,如果是全量同步,只需要要select * from [table]即可。
sql中的內容為:
SELECT * FROM zoo
第四步:logstash鏈接數據庫和Elasticsearch的conf文件
文件的內容為:
input { stdin { } jdbc { # mysql 數據庫鏈接,center為數據庫名 jdbc_connection_string => "jdbc:mysql://localhost:3306/center" # 用戶名和密碼 jdbc_user => "root" jdbc_password => "root" # 驅動 jdbc_driver_library => "E:\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.47.jar" # 驅動類名 jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50000" # 執行的sql 就是上一步創建的sql文件的絕對路徑+文件名字 statement_filepath => "E:\logstash-5.6.8\mysqletc\find.sql" # 設置監聽間隔 各字段含義(由左至右)分、時、天、月、年,全部為*默認含義為每分鐘都更新 schedule => "* * * * *" # 索引類型 type => "center" } } filter { json { source => "message" remove_field => ["message"] } } output { elasticsearch { # ES的IP地址及端口 hosts => ["localhost:9200"] # 索引名稱 index => "article" # 自增ID id必須是待查詢的數據表的序列字段 document_id => "%{id}" } stdout { # JSON格式輸出 codec => json_lines } }
完成了上面的步驟,logstash的配置也就完成了。
三、啟動logstash開始同步數據庫
首先我們在數據庫中添加一張zoo表,並添加幾條數據:
在完成了一系列的操作後,我們終於可以開始進行同步數據庫了:
第一步:運行elasticsearch.bat文件,打開elasticsearch,運行成功可以看到:
第二步:打開一個新的終端窗口,進入到E:\logstash-5.6.8\bin目錄下
第三步:運行logstash -f ../mysql/jdbc.conf,其中logstash -f 表示運行指令, ../mysql/jdbc.conf表示我們配置的jdbc.conf文件路徑,成功啟動後,可以在終端中看見運行的sql和同步的數據
四、測試是否成功
在同步完成後,我們可以通過查看Elasticsearch的庫來測試數據是否同步成功,但是在Elasticsearch 5.X開始不支持head插件,官方推薦使用的是kibana,但是我還是比較習慣使用head(主要是簡潔),所以這裏推薦一個Elasticsearch 5.x 安裝head的博客:https://blog.csdn.net/qq_28988969/article/details/78856599
安裝成功後,查看head概述可以看見我們剛才創建的索引庫:
在基本查詢中,可以看見我們同步的數據
其中:timestamp和version是elastisearch自己添加的字段
Elasticsearch學習-----第二章 windows環境下Elasticsearch同步mysql數據庫