1. 程式人生 > >Elasticsearch學習-----第二章 windows環境下Elasticsearch同步mysql數據庫

Elasticsearch學習-----第二章 windows環境下Elasticsearch同步mysql數據庫

mysql數據庫 kibana user 窗口 上下 pass targe mov 解決

在上一章中,我們已經能夠通過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數據庫