SpringBoot版本升级
在SpringBoot2.2.x版本才支持ElasticSearch7.x,所以我们先需要升级SpringBoot版本。
org.springframework.boot
spring-boot-starter-parent
2.2.2.RELEASE
ES连接配置修改
原来spring-boot-starter-data-elasticsearch
连接ES的配置如下:
spring.data.elasticsearch.cluster-nodes = 172.31.0.207:9300
spring.data.elasticsearch.cluster-name = elk-cluster
spring.data.elasticsearch.repositories.enabled = true
升级后主要使用rest接口进行连接,由于开启了x-pack
认证,所以需要修改es的账号密码,修改后配置如下:
spring.elasticsearch.rest.uris = 172.31.0.207:9300
spring.elasticsearch.rest.username = elastic
spring.elasticsearch.rest.password = changeme
ElasticsearchTemplate升级
原来spring-boot-starter-data-elasticsearch
连接ES主要使用ElasticsearchTemplate
进行操作,新版本主要使用ElasticsearchRestTemplate
@Autowired
private ElasticsearchRestTemplate elasticsearchRestTemplate;
pom文件
<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
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.2.RELEASE
com.jianzh5
esalarm
0.0.1-SNAPSHOT
esalarm
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-data-elasticsearch
- 建立ElasticSearch实体类LogDoc
@Data
@Document(indexName = “alarm-*”,type = “_doc”)
public class LogDoc implements Serializable {
private static final long serialVersionUID = 6320548148250372657L;
@Id
private String id;
private String logLevel;
private String module;
private String system;
private String refCode;
private String response;
private String parm;
private String message;
private long logTime;
}
- 建立LogRepository,操作底层查询
@Repository
public interface LogRepository extends ElasticsearchRepository<LogDoc,String> {
}
- 建立接口层LogService
public interface LogService {
/**
-
根据ID获取对应的实体
-
@param id 日志id
-
@return
*/
LogDoc getById(String id);
/**
-
根据时间范围查找指定格式的日志
-
@author javadaily
-
@date 2019/9/21 9:24
-
@param minRange 开始时间
-
@param maxRange 结束时间
-
@param logLevel 日志级别
-
@return 日志列表
*/
List findRangeLogByLevel(DateTime minRange,DateTime maxRange,String logLevel);
}
- 建立接口实现层LogServiceImpl
/**
-
@author javadaily
-
@date 2019/9/10 15:12
*/
@Service
public class LogServiceImpl implements LogService {
@Autowired
private LogRepository logRepository;
@Autowired
private ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override