快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

使用SyncNavigator数据同步工具同步mysql数据到SQL SERVER包含配置es,springboot集成搜索

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

参考:

https://cloud.tencent.com/developer/article/1183253

https://www.cnblogs.com/ashleyboy/p/9612453.html

es是一个高度可扩展的开源全文搜索和分析引擎,可以快速的、近实时地对大数据进行存储、搜索和分析,用来支撑复杂的数据搜索需求和企业级应用。简单来说,它是一个搜索引擎,可以实现全文搜索,功能类似于lucene和solr。

具体实现功能:

常规的mvc框架,因查询都是关系查询数据库,不能全局搜索。所以要实现数据增删改都依然保存在数据库,查询的时候通过es暴漏接口给客户端使用。做这个功能之前有好几个地方比较模糊,网上好多文章都只是片段的es java实现,没有完整的从数据库开始的流程,自己研究了一下觉得有两种实现方式。第一就是增删改查数据库的时候同步到es,第二是定时从数据库获取数据到es。这篇文章是第二种实现方式,从数据库建表开始,数据配置同步es脚本,springboot暴漏查询接口。

下面介绍es的安装以及head插件的安装,都是在Windows上的安装。

(1)、下载:https://www.elastic.co/downloads/elasticsearch。

(2)、安装:安装很简单,只需解压即可。解压后进入bin目录,运行里面的elasticsearch.bat,即可运行es。、

(3)、注册为Windows服务:每次启动都要运行这个文件很麻烦,可以将es注册为windows的本地。 在cmd命令窗口进入es的bin目录,然后执行如下命令: 执行成功后就可以看到es的服务了:

(4)、访问es: 启动redis服务后,访问即可看到如下界面:

特别注意es的java端口是9300,http端口9200,千万不要在java代码中使用9200去链接

head插件可以很方便的操作es,head插件与es的关系就像navicat与MySQL数据库的关系,不过head插件的界面也是通过访问网址浏览的。 (1)、下载head插件:https://github.com/searchq=elasticsearch-head

下载好上图这个解压。

(2)、安装node.js:https://nodejs.org/en/download/head插件需要node.js的支持,所以要安装它。

安装一路next即可。输入若出现node.js的版本信息,则安装成功。

(3)、安装grunt: 运行head需要借助grunt命令,所以要安装。 在cmd窗口进入node.js安装的根目录,然后执行。

(4)、安装pathomjs: 在cmd命令窗口进入head插件解压后的根目录,然后执行

(5)、连接es: 在es的安装根目录的config目录下有elasticsearch.yml,在此文件中添加如下内容:

network.host: 0.0.0.0 这个也加了,忘了后边遇到啥问题加的

(6)、运行head: 在cmd命令窗口进入head插件解压后的根目录,然后执行,如下图就启动成功。

然后访问看到如下画面就安装成功。

1.下载Logstash安装包,需要注意版本与elasticsearch保持一致,windows系统下直接解压即可。

2.添加同步mysql数据库的配置,并将mysql连接驱动jar包放在指定的配置目录

其中sql是需要同步的数据库表的查询语句。select * from xxx.

mysql.conf是同步配置文件如下:

input {
stdin {
}
jdbc {
# mysql数据库连接
jdbc_connection_string=> “jdbc:mysql://localhost/testcharacterEncoding=utf-8&useSSL=false&serverTimezone=UTC”
# mysqly用户名和密码
jdbc_user=> “root”
jdbc_password=> “”
# 驱动配置
jdbc_driver_library=> “D:\tools\logstash-7.0.0\myconfig\mysql-connector-java-5.1.44.jar”
# 驱动类名
jdbc_driver_class=> “com.mysql.jdbc.Driver”
jdbc_paging_enabled=> “true”
jdbc_page_size=> “50000”
# 执行指定的sql文件
statement_filepath=> “D:\tools\logstash-7.0.0\myconfig\blog.sql”
# 设置监听 各字段含义 分 时 天 月 年 ,默认全部为*代表含义:每分钟都更新
schedule=> “* * * * *”
# 索引类型
type=> “blog”
}
}

filter {
json {
source=> “message”
remove_field=> [“message”]
}
}

output {

elasticsearch {
#es服务器
hosts=> [“localhost:9200”]
#ES索引名称
index=> “sl_blog”
#自增ID
document_id=> “%{id}”
}

stdout {
codec=> json_lines
}
}

这里注意一下配置编码,我之前启动logstash的时候就遇到了一个编码的坑。

如果需要同步多个mysql表,可以修改output配置文件mysql.conf,在input和output中添加其他的表。(这里我暂时还没有测试,后边测试的话会把配置文件补充的)

3.启动logstash,正常的话将会同步数据值elasticsearch,根据上面的配置logstash每分钟去数据库读取最新数据

会有数据刷新到es的日志记录。

再去head里边刷新就可以看到数据

sql:

代码:

pom:

配置文件:

controller:

service:

实现类:

entity:

dao:

代码示例在:https://github.com/huiyunfei/studyDemo/tree/master/esdemo

springboot启动后es服务端一直报这个错,大概意思是接收到的是不支持的6.4版本,目前最小稳定版是6.7。

在https://blog.csdn.net/chengyuqiang/article/details/86135795看到了

网上很多言论:

新版本的SpringBoot 2的spring-boot-starter-data-elasticsearch中支持的Elasticsearch版本是2.X,
但Elasticsearch实际上已经发展到6.5.X版本了,为了更好的使用Elasticsearch的新特性,
所以弃用了spring-boot-starter-data-elasticsearch依赖,而改为直接使用Spring-data-elasticsearch
大致意思:Spring boot 2的spring-boot-starter-data-elasticsearch中支持的Elasticsearch 2.X版本,需要转向spring-data-elasticsearch,
https://github.com/spring-projects/spring-data-elasticsearch

spring data elasticsearch elasticsearch
3.2.x 6.5.0
3.1.x 6.2.2
3.0.x 5.5.0
2.1.x 2.4.0
2.0.x 2.2.0
1.3.x 1.5.2
一开始我也信了。
今天使用SpringBoot 2的spring-boot-starter-data-elasticsearch整合elasticsearch 6.x,测试了一下。实践证明是可以的。

我的解决办法是springboot用的是2.x,支持的spring-boot-starter-data-elasticsearch2.1.4,所以我直接把es版本换成6.4就可以了

启动后报另外一个错:

百度了一下说是什么版本的问题也没理解,看了下字面意思说是多了一个type我就直接把entity上边的type改成es自带的_type doc了。

然后serviceimpl里边代码改成

再启动postman测试就成功了。(这个问题闲了在研究,我现在就急着记录一下下班啦)

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638