【ElasticSearch】---ElasticSearch同步Mysql

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 => "500"
  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 => "500"
  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)

原文地址:https://www.cnblogs.com/qdhxhz/p/9520685.html

时间: 2024-10-07 22:09:18

【ElasticSearch】---ElasticSearch同步Mysql的相关文章

使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch

本文介绍如何使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch. 1.go-mysql-elasticsearch简介 go-mysql-elasticsearch是一个将MySQL数据自动同步到Elasticsearch的服务. 它首先使用mysqldump获取原始数据,然后用binlog增量地同步数据. github地址:https://github.com/siddontang/go-mysql-elasticsearch 这里有几点注意事

logstash同步mysql数据到Elasticsearch

安装logstash查看我的另一篇文章  Docker 部署 logstash 同步数据我们首先需要安装好对应的插件,然后下载对应的数据库链接jar包,下面是具体的步骤 1.进入容器中 docker exec it logstash bash 2.进入到bin 目录下,我这里是/usr/share/logstash/bin,可以看到logstash-plugin文件,然后安装插件 logstash-plugin install logstash-input-jdbc 3.看到如下输出,则表示安装

logstash增量同步mysql数据到es

本篇本章地址:https://www.cnblogs.com/Thehorse/p/11601013.html 今天我们来讲一下logstash同步mysql数据到es 我认为呢,logstash是众多同步mysql数据到es的插件中,最稳定并且最容易配置的一个. input { stdin { } jdbc { type => "xxx" jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/yinhela

sqoop同步mysql数据到hive中

一.sqoop 在同步mysql表结构到hive sqoop create-hive-table --connect jdbc:mysql://ip:3306/sampledata --table t1--username dev --password 1234 --hive-table t1; 执行到这一步就退出了,但是在hadoop的hdfs上的/hive/warehouse/的目录下是找不到t1表的目录, 但是正常执行完成是下面这样的: 错误就是hive的jar包有缺失 全部的jar包该是

solr5.5.4 增量索引 自动同步mysql数据

前言:之前测试了solr好几个版本都没有成功,solr比较好下载的版本5.0,5.5,6.6.solr6.6结合tomcat8做自动同步mysql数据一直报错,然后果断测试5.5版本的,成功了. 环境:windows10, jdk1.8,tomcat8,solr5.5.4 实现功能:通过前端输入关键字查询,同时查询多表多字段.当数据库mysql添加或者更新数据的时候,数据自动更新到solr引擎中. 正文: 第一步:下载solr 1.solr5.5下载:http://apache.fayea.co

DBSync如何连接并同步MySQL

DBSync支持各种异构数据库之间的同步,如Access.SQL Server.Oracle.MySQL.DB2等,但很多用户在同步MySQL时遇到问题,这里讲述一下解决措施. 1.问题现象DBSync设置同步任务时,如果数据库类型是MySQL,填好连接字串后,点测试连接,会报错:未在本地计算机上注册MySQL Provider提供程序,如下图所示: 2.问题原因DBSync采用OLE DB连接.绝大部分数据库支持OLE DB,安装相应的数据库客户端时,会自动安装其OLE DB Provider

logstash-input-jdbc实现mysql 与elasticsearch实时同步深入详解

elasticsearch 的出现使得我们的存储.检索数据更快捷.方便.但很多情况下,我们的需求是:现在的数据存储在MySQL.Oracle等关系型传统数据库中,如何尽量不改变原有数据库表结构,将这些数据的insert,update,delete操作结果实时同步到elasticsearch(简称ES)呢? 本文基于以上需求点展开实战讨论. 1.对delete操作的实时同步泼冷水 到目前为止,所有google,stackoverflow,elastic.co,github上面搜索的插件和实时同步的

在Windows平台下Elasticsearch同步MySql数据库

我是用ElasticSearch的版本是elasticsearch-6.3.1 mysql的数据是5.7的,其实这个关系不大. logstash版本是6.3.1 ElasticSearch的插件elasticsearch-head-master  ,现在加压好了,直接放在ElasticSearch目录下面就好了,这不强制. 这个是mysql的数据库连接驱动程序 mysql--connector-java-5.1.18.zip 因为使用了ElasticSearch这个插件所以还需要安装nondjs

logstash同步mysql到elasticsearch

logstash 获取 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.2.zip unzip logstash-6.5.2.zip && cd logstash-6.5.2 安装 jdbc 和 elasticsearch 插件 bin/logstash-plugin install logstash-input-jdbc bin/logstash-plugin install logstash-outpu