ElasticSearch(1)---Mysql同步数据到ElSearch
ElasticSearch同步Mysql
先讲项目需求:对于资讯模块添加搜索功能

这个搜索功能我就是采用ElasticSearch实现的,功能刚实现完,所以写这篇博客做个记录,让自己在记录下整个步骤和过程中的一些注意事项。
一、安装elasticsearch和可视化工具
有关整个教程参考:mac安装elasticsearch和可视化工具
1、安装elasticsearch
网址地址:官网
2、安装elasticsearch-head(可视化界面)
安装地址:https://github.com/mobz/elasticsearch-head
3、安装Node.js
安装地址:Mac 下安装node.js
4、grunt-cli(3、4主要配合2实现可视化界面)
命令:sudo npm install -g grunt-cli (我的是安装在Mac上,所以其它不一定适用其它)
在终端运行: grunt --version(成功QQ图)

5、elasticsearch和elasticsearch-head整合
修改 elasticsearch.yml 文件,在文档的最末端加入
http.cors.enabled: true
http.cors.allow-origin: "*"
查看查看结果:输入:localhost:9100

这里说明整个已经安装成功并已经连接成功,green代表很健康
二、安装logstash并同步MySQL数据库
相关博客推荐:安装logstash并同步MySQL数据库
1、下载logstash
注意:下载的版本要和你的elasticsearch的版本号一致,我的版本elasticsearch6.3.2
2、配置logstash-jdbc-input
据说2.x以上就不用配置了,不过我还是配置了
3、添加mysql-connector驱动jar包
把这个jar包放入logstash中:mysql-connector-java-5.1.21.jar
4、添加配置文件(用于连接elasticsearch和mysql数据库)很重要!
具体的解释推荐博客:logstash input jdbc连接数据库
input {
stdin {
}
jdbc {
type => "news_info"
#后面的test对应mysql中的test数据库
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/news"
jdbc_user => "root"
jdbc_password => "root"
tracking_column => "auto_id"
record_last_run => "true"
use_column_value => "true"
#代表最后一次数据记录id的值存放的位置,它会自动在bin目录创建news,这个必填不然启动报错
last_run_metadata_path => "news"
clean_run => "false"
# 这里代表mysql-connector-java-5.1.21.jar放在bin目录
jdbc_driver_library => "mysql-connector-java-5.1.21.jar"
# the name of the driver class for mysql
jdbc_driver_class => "Java::com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => ""
statement => "select auto_id,title,content,up_count,down_count,origin_create_time,grade from t_live_news_origin where auto_id > :sql_last_value and similar_score>0.5"
#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
#设定ES索引类型
}
jdbc {
type => "press_info"
# mysql jdbc connection string to our backup databse 后面的test对应mysql中的test数据库
jdbc_connection_string => "jdbc:mysql:////127.0.0.1:3306/news"
jdbc_user => "root"
jdbc_password => "root"
tracking_column => "auto_id"
record_last_run => "true"
use_column_value => "true"
last_run_metadata_path => "news"
clean_run => "false"
jdbc_driver_library => "mysql-connector-java-5.1.21.jar"
jdbc_driver_class => "Java::com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => ""
statement => "select auto_id,title,source_mc,read_count,summary,summary_img,origin_create_time from t_live_press_origin where auto_id > :sql_last_value"
#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
filter {
mutate {
convert => [ "publish_time", "string" ]
}
date {
timezone => "Europe/Berlin"
match => ["publish_time" , "ISO8601", "yyyy-MM-dd HH:mm:ss"]
}
#date {
# match => [ "publish_time", "yyyy-MM-dd HH:mm:ss,SSS" ]
# remove_field => [ "publish_time" ]
# }
json {
source => "message"
remove_field => ["message"]
}
}
output {
if [type]=="news_info" {
elasticsearch {
#ESIP地址与端口
hosts => "127.0.0.1:9200"
#ES索引名称(自己定义的)
index => "wantu_news_info"
#自增ID编号
document_id => "%{auto_id}"
}
}
if [type]=="press_info" {
elasticsearch {
#ESIP地址与端口
hosts => "127.0.0.1:9200"
#ES索引名称(自己定义的)
index => "wantu_press_info"
#自增ID编号
document_id => "%{auto_id}"
}
}
}
mysql.yml
5、启动logstash
#我这里的mysql.yml放到了bin的上层目录
./logstash -f ../mysql.yml
6、实际效果


连接成功,已经成功把MySQL数据库表中的数据存储到Elasticsearch中,并且logstash每一分钟去数据库读取最新数据。
最后看下我的logstash文件存放位置

三、坑和注意事项的总结
1、如下报错说明没有找到你的mysql-connectorjar包,很可能你的jar没有放到配置文件指定的目录。

2、需要重新让查询从0开始。
那就删除last_run_metadata_path => "news"的news文件,当然也要记得删除该索引好让它重新读取数据库表中数据。
相关其它坑博客地址:坑的总结
再遇到其它相关坑,百度吧,都能快速找到答案。
我只是偶尔安静下来,对过去的种种思忖一番。那些曾经的旧时光里即便有过天真愚钝,也不值得谴责。毕竟,往后的日子,还很长。不断鼓励自己,
天一亮,又是崭新的起点,又是未知的征程(上校4)
ElasticSearch(1)---Mysql同步数据到ElSearch的更多相关文章
- elasticsearch -- Logstash实现mysql同步数据到elasticsearch
配置 安装插件由于这里是从mysql同步数据到elasticsearch,所以需要安装jdbc的入插件和elasticsearch的出插件:logstash-input-jdbc.logstash-o ...
- 利用logstash从mysql同步数据到ElasticSearch
前面一篇已经把logstash和logstash-input-jdbc安装好了. 下面就说下具体怎么配置. 1.先在安装目录bin下面(一般都是在bin下面)新建两个文件jdbc.conf和jdbc. ...
- mysql 同步数据到 ElasticSearch 的方案
MySQL Binlog 要通过 MySQL binlog 将 MySQL 的数据同步给 ES, 我们只能使用 row 模式的 binlog.如果使用 statement 或者 mixed forma ...
- 利用Logstash插件进行Elasticsearch与Mysql的数据
Logstash与Elasticsearch的安装就不多说了,我之前有两篇文章写的比较详细了ElasticSearch + Logstash + Kibana 搭建笔记 和 Filebeat+Logs ...
- 『现学现忘』Docker基础 — 31、实现MySQL同步数据
目录 1.搜索镜像 2.拉取镜像 3.查看镜像 4.启动镜像 5.操作容器 (1)在MySQL中创建数据库 (2)外部连接Dokcer容器中的MySQL服务 (3)查看挂载情况 (4)测试MySQL服 ...
- 使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能
最近用了几天时间为公司项目集成了全文搜索引擎,项目初步目标是用于搜索框的即时提示.数据需要从MySQL中同步过来,因为数据不小,因此需要考虑初次同步后进行持续的增量同步.这里用到的开源服务就是Elas ...
- elasticsearch从mysql导入数据
详细:https://github.com/jprante/elasticsearch-jdbc(最下面有各数据库的导入方法说明) elasticsearch版本为1.5.2 1.下载 elastic ...
- Docker系列(17)- MySQL同步数据
#获取镜像 [root@localhost ~]# docker pull mysql:5.7 #启动容器,需要做数据挂载!安装启动mysql,需要配置密码的,这是注意点! #官方安装文档:docke ...
- ElasticSearch 安装 go-mysql-elasticsearch 同步mysql的数据
一.首先在Centos6.5上安装 go 语言环境 下载Golang语言包:https://studygolang.com/dl [hoojjack@localhost src]$ ls apache ...
随机推荐
- ES6---箭头函数()=>{} 与function的区别(转载)
1.箭头函数与function定义函数的写法: //function function fn(a, b){ return a + b; } //arrow function var foo = (a, ...
- jar文件内lib引用的jar插件修改后更新
打包的java服务在第三方jar进行修改后,要更新线上的jar包时,直接替换原有lib引用的jar文件,会造成服务起不来, 可在本地clean install之后,用线上的classes文件夹替换本地 ...
- MyIbatis和Hibernate的区别--2019-04-26
1.MyBatis 真正实现了java代码和sql的分离 2.Hibernate 是全自动的,MyBatis是半自动的 Hibernate实现了部分自动生成SQL 3.SQL优化上 MyBatis 强 ...
- [enum]enum的用法
ENUM概况 enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的. ENUM定义 C++ e ...
- Bad Hair Day [POJ3250] [单调栈 或 二分+RMQ]
题意Farmer John的奶牛在风中凌乱了它们的发型……每只奶牛都有一个身高hi(1 ≤ hi ≤ 1,000,000,000),现在在这里有一排全部面向右方的奶牛,一共有N只(1 ≤ N ≤ 80 ...
- python学习:元组和嵌套
tuple(元组):只是可读,不可以修改# tup1 = () #空元组# tup2 = (20,) #元组内有一个元素,需要在元素后添加逗号 a = (1,2,3,4)print(a[1])a[1] ...
- softmax in pytorch
背景 在分类中,最常见的设置是一个输入,输出是类数目大小的向量.预测的输入类将是在最后一个网络层中具有最大条目的相应类.在分类任务中,交叉熵损失(交叉熵)是训练这类网络最常见的损失函数.交叉熵损失可以 ...
- [VUE]object.defineProperty的基本使用
1.object.defineProperty 给一个对象定义一个新的属性或者在修改一个对象现有的属性,并返回这个对象 语法: Object.defineProperty(参数1,参数2,参数3) 参 ...
- Html元素添加事件禁用
最近几天,测试在检测我页面功能时,疯狂点击带接口请求的按钮,然后就会发起无数次请求,然后app就卡住了.当看到这个问题的时候,心里疯狂鄙视测试(开个玩笑),一开始想的到解决方案是用函数防抖,使用函数防 ...
- Mesos源码分析(3): Mesos Master的启动之二
2. process::firewall::install(move(rules));如果有参数--firewall_rules则会添加规则 对应的代码如下: // Initialize fire ...