Elasticsearch学习(2) windows环境下Elasticsearch同步mysql数据库
在上一章中,我们已经能够通过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学习(2) windows环境下Elasticsearch同步mysql数据库的更多相关文章
- windows环境下svn同步web文件[转]
windows环境下svn同步web文件 SVN在团队开发中使用非常普遍,是一个很方便的版本控制系统. 如果要是能将SVN服务器上的数据自动发布到Web服务器,那将是整个项目开发.测试更加便捷.利用S ...
- 《高可用MySQL》1 – Windows环境下压缩版MySQL安装
近日在读O’REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天 ...
- windows环境下elasticsearch安装教程(超详细)
一.安装jdk ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持.所以要先安装JAVA环境. 由于ElasticSearch 5.x 往后依赖于JDK 1.8的 ...
- hadoop学习(四)----windows环境下安装hadoop
因为我们不能在线上环境进行调试hadoop,这样就只能在本地先调试好了再放到线上去啦.我本地是windows环境,今天先记下windows下搭建hadoop2.7的步骤. 1 本地环境 windows ...
- PHP基础 windows环境下安装Apache Mysql PHP
本篇文章主要是讲一下我自己安装wamp环境的一些步骤和见解,前方多图预警,慎入!!!!! PHP运行环境 : Linux下的三种安装方式:源码包安装.rpm包安装.集成环境安装(lnmp) wind ...
- Windows环境下 PHP+Apache+Mysql配置
网上关于这种搭配的配置有许多许多,但是不知道大家有否碰到这么一个问题,就是做好的PHP程序(内含访问mysql数据库的操作)发布到Apache服务器上之后, 运行程序,提示未找到数据库函数. 仔细检查 ...
- Windows操作系统下远程连接MySQL数据库
用Eclipse做一个后台项目,但是数据库不想放在本地电脑,于是买了一个腾讯云服务器(学生有优惠,挺便宜的),装上MySQL数据库,但是测试连接的时候,发现总是连接不是上,但是本地数据库可以连接,于是 ...
- Django框架学习笔记(windows环境下安装)
博主最近开始学习主流框架django 网上大部分的安装环境都linux的 由于博主在windows环境下已经有了 Pycharm编辑器 ,所以决定还是继续在windows环境下学习 首先是下载 链接 ...
- Docker学习<一>--初体验Windows环境下安装
背景 今天想试用spring boot与jwt协议的实现,配套就需要使用redis,但redis似乎windows环境版本部署起来不是那么舒心,果断尝试使用docker. 下载 下载地址: 稳定版:h ...
随机推荐
- [iOS]使用autolayout的时候会有明明设置和父视图左右间距为0但却还有空隙问题
有时候设置左右与父视图间距为0但却还有空隙,relative to margin 作怪,到关系里面,把这个取消掉.如关系里面的 firstitem 如果显示 xxView.trailling.marg ...
- SPI子系统分析之一:框架
内核版本:3.9.5 SPI子系统概述: 一个SPI主控制器对应一条SPI总线,当然在系统中有唯一的总线编号. SPI总线上有两类设备: 其一是主控端,通常作为SOC系统的一个子模块出现,很多嵌入式M ...
- Android判断Service是否运行
/** * 用来判断服务是否运行. * @param context * @param className 判断的服务名字 * @ret ...
- pycharm打开脚本报错Gtk-Message: Failed to load module "canberra-gtk-module"
解决方法 sudo apt-get install libcanberra-gtk-module
- linux shell脚本编程笔记(一): 构建基本脚本
1. echo -n str 打印不换行 2. 反引号来圈住命令传入变量 eg: 生成日志文件: #!/bin/bash today=`date +%y%m%d` ls /usr/bin ...
- Web内容回顾
-----------------siwuxie095 Java EE 三层结构 1.Web 层:Struts2 框架 2.Service 层:Spring 框架 3.DAO 层:Hibernate ...
- IOS 获取农历方法(转)
声明:以下为使用iOS的 NSChineseCalendar 网上之前发现有人说这个方法不是完全准确,有些日期会显示的不对,本人没有验证过,也实在懒得用C++那套方法去实现. 另外我做的不过是个简单的 ...
- dos中的延迟环境变量扩展
一.前言 昨天在写bat脚本的时候,发现在for里面的set命令竟然不起作用!于是搜了一下,前面的几篇都有说到这个是变量扩展的问题,但是什么是变量扩展?为什么会出现这种问题,什么又是延迟环境变量扩展? ...
- [C++] Swap Two Num
Swap Two Num
- 1083 Moving Tables
题目链接:http://poj.org/problem?id=1083 题意: 走廊两边分别有200个房间,一边连续编号为1-399的奇数,另一边是2-400的偶数, 如果从房间 i 移动桌子到房间 ...