SpringBoot ES 集成 + ES Logstash MySql实时同步

前两篇文章已经实现了es部署和boot的整合,这篇主要记录es 和 mysql 的数据同步

  • 安装部署Logstash

下载地址: https://www.elastic.co/cn/downloads/logstash

下载完成,解压即可

目的:同步mysql中的tb_our_finance至ES中,为ES提供搜索资源

  • 配置

在安装(解压)目录下的config中建立mysql.conf文件进行连接mysql的配置

  • 在配置文件中配置input和output的节点(数据库相关的部分自己填写)
input {
	stdin {
    }
    jdbc {
  
      jdbc_connection_string => "jdbc:mysql://xxx.xxx.xxx.xxx:3306/time?characterEncoding=utf-8"
     
      jdbc_user => "root"
      jdbc_password => "root"

      jdbc_driver_library => "F:\maven-repository\mysql\mysql-connector-java\5.1.44\mysql-connector-java-5.1.44.jar"

      jdbc_driver_class => "com.mysql.jdbc.Driver"  
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"

      statement => "SELECT id,money,purpose,remark,status,tag1,tag2,time FROM tb_our_finance"

      schedule => "* * * * *" 
    }
}

output {
    elasticsearch {
        hosts => "127.0.0.1:9200"

		index => "finance"

        document_id => "%{id}"
		document_type => "user"
    }
    stdout {
        codec => json_lines
    }
}

注意:jdbc_driver_library可以填写相对路径和绝对路径,index 和document_type 不能出现大写,schedule 定时任务最小同步时间为一分钟

  • 启动ES建立 index:finance,type:user

http://127.0.0.1:9200/finance/user

  • 运行Logstash

bin\logstash.bat -f config\mysql.conf

建立连接中
首次同步,数据太多就截了一部分
  • PostMan测试一把

整合SpringBoot 使用elasticsearch

  • 代码截图

Entity:

注意indexname 和 type
Field使用ik

Dao:

Service:

Controller:

  • 运行测试

以status为搜索引擎的关键字,0:支出 1:收入

上面代码在搜索时使用了分页,显示十条数据

再使用名字来模糊检索

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注