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的数据大概同步了五分钟左右就完成了。至此,从几大软件的安装到数据的同步就介绍完成了,希望对你有所帮助。
在这里插入图片描述
在这里插入图片描述

发布了136 篇原创文章 · 获赞 30 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/qq_33029793/article/details/103080805