使用Logstash把MySQL数据导入到Elasticsearch中

摘要:
摘要:此方法适用于将现有MySQL数据导入Elasticsearch。有一个csv文件,其中的数据通过NavicatPremium软件导入到数据表中。有998个数据文件下载地址:https://files.cnblogs.com/files/sanduzxcvbnm/SalesJan2009.zipcsv文件格式如下:Logstash配置1.下载连接到MySQL的驱动程序包,并将其放在指定目录中的地址ht

总结:这种适合把已有的MySQL数据导入到Elasticsearch中

有一个csv文件,把里面的数据通过Navicat Premium 软件导入到数据表中,共有998条数据

文件下载地址:https://files.cnblogs.com/files/sanduzxcvbnm/SalesJan2009.zip

csv文件格式如下:
使用Logstash把MySQL数据导入到Elasticsearch中第1张

Logstash 配置
1.下载连接mysql的驱动包,放到指定目录下
在地址https://dev.mysql.com/downloads/connector/j/下载最新的Connector。下载完这个Connector后,把这个connector存入到Logstash安装目录下的如下子目录中:

logstash-core/lib/jars/

使用Logstash把MySQL数据导入到Elasticsearch中第2张

conf文件内容如下:

input {
    jdbc {
       jdbc_connection_string => "jdbc:mysql://192.168.0.145:3306/db_example?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"
       jdbc_user => "root"
       jdbc_password => "root"
       jdbc_validate_connection => true
       jdbc_driver_library => ""
       jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
       parameters => { "Product_id" => "Product1" }
       statement => "SELECT * FROM salesjan2009 WHERE Product = :Product_id"
    }    
}
 
filter {
	mutate {
	 	rename => {
        	"longitude" => "[location][lon]"
        	"latitude" => "[location][lat]"
    	}
    }
}
 
output {
    stdout {
    
    }
 
   elasticsearch {
        hosts => ["192.168.75.21:9200"]
     	index => "sales" # 指定索引名
     	document_type => "_doc"
        user => "elastic"
        password => "GmSjOkL8Pz8IwKJfWgLT"
    } 
}

说明:
1.jdbc_connection_string => "jdbc:mysql://192.168.0.145:3306/db_example?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"
连接的数据库地址,端口号,数据库名,字符编码,时区等,db_example为数据库名
2.
jdbc_user => "root"
jdbc_password => "root"
连接数据库使用的用户名和密码,根据自己的实际情况而定

3.jdbc_driver_library
驱动包路径,若是在logstash指定目录下则留空,若不是则需要指定绝对路径

4.jdbc_driver_class
最新使用的驱动包类

5.parameters
设置一个参数Product_id,其值是Product1

6.statement
sql语句,结合上面的理解,是查询salesjan2009数据表中条件Product的值是Product_id也即是Product1的数据

7.filter mutate
新增一个字段,重构经纬度参数值结构

运行Logstash来加载我们的MySQL里的数据到Elasticsearch中:

./bin/logstash --debug -f  ./config/conf.d/sales.conf 

可以在Kibana中查看到最新的导入到Elasticsearch中的数据:
使用Logstash把MySQL数据导入到Elasticsearch中第3张

注意数据总数,并不是数据表中的全部数据,而是根据查询条件获得的部分数据。

免责声明:文章转载自《使用Logstash把MySQL数据导入到Elasticsearch中》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[笔记]VGA 接口电阻网络阻抗php 图片操作类 Intervention Image下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mybatis批量新增报错 BadSqlGrammarException

org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL synta...

项目中应该怎么选择MySQL的事务隔离级别

知识点总结 1.数据库默认隔离级别: mysql :Repeatable Read; oracle、sql server :Read Commited 2.mysql binlog的格式三种:statement,row,mixed 3.为什么mysql用的是Repeatable Read而不是Read Commited:在 5.0之前只有statement...

mysql数据库编码问题

一:插入数据乱码 ①:数据库的字符集不对,需要修改成utf-8;如果解决不了走第二步 ②: var cmd = new MySqlCommand(“set names utf8”);如果解决不了走第三步 ③:把“Charset=utf8”加载数据库连接字符串后边即可。在解决不了没辙了,换数据库吧!  二:获取有乱码问题  Incorrect strin...

通过docker搭建LNMP平台(以wordpress为例)

1.创建自定义网络 docker network create lnmp #创建自定义网络 docker network ls #查看 2.创建mysql数据库容器 docker run -itd --name lnmp_mysql --net lnmp -p 3306:3306 --mount src=mysql-...

MySQL 集群

MySQL Galera介绍主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 用户可以直接连接集群,使用感受上与MySQL完全一致 优势: 因为是多主,所以不存在Slave lag(延迟) 不存在丢失交易的情况 同时具有读和写的扩展...

Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel

Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel 1、MySQL安装【安装 MariaDB】MariaDB是MySQL的一个分支首先,更新升级系统$ sudo apt update$ sudo apt upgrade安装MariaDB:$ sudo apt install mariadb...