使用logstash將Mysql中的數據導入到ElasticSearch中(詳細步驟,win_Elasticsearch)

在之前轉載的一騰訊高級工程師《一文徹底瞭解Logstash》對logstach有這詳細的介紹,這裏我只說明一下,將mysql中的數據使用logstash導入到es中,如何操作,具體步驟見下方:

  1. 下載logstash
    https://artifacts.elastic.co/downloads/logstash/logstash-7.3.2.zip
  2. 解壓的指定目錄
  3. 在bin的同級目錄中創建存放mysql驅動jar的文件夾mysql
  4. 拷貝mysql驅動jar包到3中的mysql文件夾中
  5. 在config或bin下創建配置文件logstash.conf【話雖這樣說,不過我在config下並不成功】
  6. logstash.conf內容,詳見配置文件
input {
  # 多張表的同步只需要設置多個jdbc的模塊就行了
  jdbc {
      # mysql 數據庫鏈接,shop爲數據庫名
      jdbc_connection_string => "jdbc:mysql://localhost:3306/spider?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
      # 用戶名和密碼
      jdbc_user => "root"
      jdbc_password => "root"

      # 驅動
      jdbc_driver_library => "D:/es/logstash-7.3.2/mysql/mysql-connector-java-5.1.6-bin.jar"

      # 驅動類名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_validate_connection => "true"

      #是否分頁
      jdbc_paging_enabled => "true"
      jdbc_page_size => "1000"
      #時區
      jdbc_default_timezone => "Asia/Shanghai"

      #直接執行sql語句
      statement => "select * from news where id >=:sql_last_value order by id asc"
      # 執行的sql 文件路徑+名稱
      # statement_filepath => "/hw/elasticsearch/logstash-6.2.4/bin/test.sql"

      #設置監聽間隔  各字段含義(由左至右)分、時、天、月、年,全部爲*默認含義爲每分鐘都更新
      schedule => "* * * * *"
      #每隔10分鐘執行一次
      #schedule => "*/10 * * * *"
      #是否記錄上次執行結果, 如果爲真,將會把上次執行到的 tracking_column 字段的值記錄下來,保存到last_run_metadata_path
      record_last_run => true
      #記錄最新的同步的offset信息
      last_run_metadata_path => "D:/es/logstash-7.3.2/logs/last_id.txt"

      use_column_value => true
      #遞增字段的類型,numeric 表示數值類型, timestamp 表示時間戳類型
      tracking_column_type => "numeric"
      tracking_column => "id"
      
      clean_run => false

      # 索引類型
      #type => "jdbc"
    }

}


output {
  elasticsearch {
        #es的ip和端口
        hosts => ["http://localhost:9200"]
        #ES索引名稱(自己定義的)
        index => "spider"
        #文檔類型
        document_type => "_doc"
        #設置數據的id爲數據庫中的字段
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

  1. 啓動logstash,進入bin文件夾下,執行:logstash -f logstash.conf
發佈了771 篇原創文章 · 獲贊 652 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章