ElasticSearch從入門到精通 (Logstash把mysql中的數據同步到ElasticSearch中)

1、在mysql創建數據庫表

Create Table: CREATE TABLE `emp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `empno` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  `deptId` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

2、使用腳本在表中插入上百萬條數據

過程略。。。想要腳本的可以私信我。

3、在ElasticSearch中創建索引

PUT  /index_emp

4、配置logstash:實現ElasticSearch與mysql數據庫的數據同步

(1)在logstash-6.4.0文件目錄下新建一個文件夾,名字隨意,我這裏創建的是mysqltest文件夾。

(2)在mysqltest文件夾下首先創建mysql.conf文件,文件內容如下:

input {
    stdin {
    }
    jdbc {
      # mysql 數據庫鏈接,test01爲數據庫名
      jdbc_connection_string => "jdbc:mysql://192.168.225.143:3306/test01"
      # 用戶名和密碼
      jdbc_user => "root"
      jdbc_password => "123456"
      # 驅動,我這裏把驅動也放到mysqltest目錄下了
      jdbc_driver_library => "/home/dcs/soft/logstash-6.4.0/mysqltest/mysql-connector-java-5.1.7-bin.jar"
      # 驅動類名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 執行的sql 文件路徑+名稱
      statement_filepath => "/home/dcs/soft/logstash-6.4.0/mysqltest/test_emp.sql"
      # 設置監聽間隔  各字段含義(由左至右)分、時、天、月、年,全部爲*默認含義爲每分鐘都更新
      schedule => "* * * * *"
      # 索引類型
      type => "item"
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
    elasticsearch {
        hosts => ["192.168.225.143:9200"]
        index => "index_emp"
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

(3)創建一個sql文件,命名爲test_emp.sql(名稱隨意)和上邊mysql.conf的配置文件一致,需要往elasticsearch中同步哪些字段自己定義

SELECT
  id,
  empno,
  name,
  age,
  deptId
FROM emp

3.啓動logstash,啓動命令:./logstash -f …/mysqltest/mysql.conf,稍等片刻就會看到數據同步了。
在這裏插入圖片描述
我在測試中350000的數據大概同步了五分鐘左右就完成了。至此,從幾大軟件的安裝到數據的同步就介紹完成了,希望對你有所幫助。
在這裏插入圖片描述
在這裏插入圖片描述

發佈了134 篇原創文章 · 獲贊 29 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章