用es代替mysql存储数据_用Elasticsearch代替数据库存储日志方式

本文介绍了一个将用户操作日志从MySQL迁移到Elasticsearch的案例,涉及SpringBoot、AOP和注解的使用。通过配置Elasticsearch、创建Log实体、定义Dao层、自定义注解和切面,实现了日志记录到ES的功能。
摘要由CSDN通过智能技术生成

之前的项目中一直使用的是数据库表记录用户操作日志的,但随着时间的推移,数据库log单表是越来越大「不考虑删除」,再加上近期项目中需要用到Elasticsearch,所以干脆把这些用户日志迁移到ES上来了。

环境:SpringBoot2.2.6 + Elasticsearch6.8.8

如果你还不了解Elasticsearch的话,可以参考之前的几篇文章:

由于之前就是使用的AOP+注解方式实现日志记录,而本次依旧采用这种方式,所以改动不大,把保存至数据库换成ES就可以了,开始吧。

文章最后我会提供源码的,正文描述部分有省略~

1、引入依赖文件

pom.xml文件中引入需要的es、aop所需的依赖:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.2.6.RELEASE

com.example

demo

0.0.1-SNAPSHOT

demo

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-devtools

runtime

true

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

org.springframework.boot

spring-boot-starter-aop

org.springframework.boot

spring-boot-starter-data-elasticsearch

com.google.code.gson

gson

2.8.6

cn.hutool

hutool-all

5.3.2

org.springframework.boot

spring-boot-maven-plugin

2、修改yml配置文件

加入elasticsearch的配置信息:

server:

port: 6666

servlet:

context-path: /

tomcat:

uri-encoding: UTF-8

spring:

# Elasticsearch

data:

elasticsearch:

client:

reactive:

# 要连接的ES客户端 多个逗号分隔

endpoints: 127.0.0.1:9300

# 暂未使用ES 关闭其持久化存储

repositories:

enabled: true

3、Log实体

使用了lombok「 @Data 注解」简化 set\get,spring-data-elasticsearch提供了@Document、@Id、@Field注解,其中@Document作用在实体类上,指向文档地址,@Id、@Field作用于成员变量上,分别表示主键、字段。

@Data

@Document(indexName = "log", type = "log", shards = 1, replicas = 0, refreshInterval = "-1")

public class EsLog implements Serializable{

private static final long serialVersionUID = 1L;

/**

* 主键

*/

@Id

private String id = SnowFlakeUtil.nextId().toString();

/**

* 创建者

*/

private String createBy;

/**

* 创建时间

*/

@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")

@Field(type = FieldType.Date, index = false, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss")

private Date createTime = new Date();

/**

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值