springboot集成es

阅读: 评论:0

springboot集成es

springboot集成es

Springboot集成es

1、引入依赖

<!--elasticsearch-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

2、增加es服务配置

# es服务地址
elasticsearch:host: 127.0.0.1# es服务端口port: 9350

3、实体

@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "device_log")
@Setting(shards = 3)
@Builder
public class DeviceLog implements Serializable {@Idprivate String id;/*** 设备ID*/@Field(type = FieldType.Keyword)private String devId;/*** 设备名称*/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String deviceName;/*** 设备sn码*/@Field(type = FieldType.Keyword)private String deviceSn;/*** 设备所属产品名称*/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String productName;/*** 设备所属产品ID*/@Field(type = FieldType.Keyword)private String productUuid;/*** 产品功能点ID的标识符   如 功能点id为101的标识符为event*/@Field(type = FieldType.Keyword)private String deviceDpId;/*** 日志等级定义:* 提示-TIPS* 次要-SECONDARY* 重要-IMPORTANT* 紧急-URGENT*/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String logLevel;/*** 日志事件类型定义:* 设备上线-DEVICE_ONLINE* 设备下线-DEVICE_OFFLINE* 数据上报-DEVICE_DATA_REPORT* 事件上报-DEVICE_EVENT_REPORT* 设备重置-DEVICE_RESET* 设备激活-DEVICE_ACTIVATION* 固件升级-DEVICE_FIRMWARE_UPGRADE* 设备重启-DEVICE_RESTART_UPGRADE* 设备心跳-DEVICE_HEARTBEAT**/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String eventType;/*** 事件名称*/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String eventName;/*** 事件详情*/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String eventDetail;/***  来源*/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String source;/*** 来源详情*/@MultiField(mainField = @Field(type = FieldType.Text),otherFields = {@InnerField(suffix = "keyword", type = FieldType.Keyword)})private String sourceDetail;/*** 记录时间*/@Field(type = FieldType.Date)private Date recordTime;/*** 记录时间戳  9位(精确到秒)*/@Field(type = FieldType.Long)private Long recordTimestamp;

4、实现service
service:

public interface DeviceLogService {/*** 保存日志* @param deviceLog 日志信息*/void saveDeviceLog(DeviceLog deviceLog);/*** 保存日志与转换时间戳* @param deviceLog*/void saveDeviceLogAndChangeDateType(DeviceLog deviceLog);/*** 通用设备日志查询* @return 日志信息*/SearchHits<DeviceLog> commonDeviceLogQuery(DeviceLogQueryDTO deviceLogQueryDTO);
}

实现类:

@Service
@Slf4j
public class DeviceLogServiceImpl  implements DeviceLogService {@Autowiredprivate DeviceLogRepository deviceLogRepository;@Autowiredprivate ElasticsearchOperations elasticsearchOperations;@Overridepublic void saveDeviceLog(DeviceLog deviceLog) {log.info("deviceLog::"&#String());deviceLogRepository.save(deviceLog);}@Overridepublic void saveDeviceLogAndChangeDateType(DeviceLog deviceLog) {if (RecordTimestamp() == null){deviceLog.setRecordTimestamp(System.currentTimeMillis()/1000);}deviceLog.setRecordTime(new RecordTimestamp()*1000));deviceLogRepository.save(deviceLog);}@Overridepublic SearchHits<DeviceLog> commonDeviceLogQuery(DeviceLogQueryDTO deviceLogQueryDTO) {NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();checkParamAndDataInput(deviceLogQueryDTO, boolQueryBuilder,nativeSearchQueryBuilder);Query query = nativeSearchQueryBuilder.withSorts(SortBuilders.FieldName(DeviceLog::getRecordTime)).order(SortOrder.DESC)).build();SearchHits<DeviceLog> deviceLogPage = elasticsearchOperations.search(query, DeviceLog.class);return deviceLogPage;}/*** 检查请求参数与填充查询条件数据*/private void checkParamAndDataInput(DeviceLogQueryDTO deviceLogQueryDTO, BoolQueryBuilder boolQueryBuilder, NativeSearchQueryBuilder nativeSearchQueryBuilder){if (StringUtils.DevId())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getDevId),DevId())));}if (StringUtils.DeviceDpId())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getDeviceDpId),DeviceDpId())));}if (StringUtils.DeviceName())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getDeviceName)+ Constants.CHINESE_QUERY_KEYWORD_DeviceName())));}if (StringUtils.DeviceSn())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getDeviceSn),DeviceSn())));}if (StringUtils.ProductName())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getProductName)+ Constants.CHINESE_QUERY_KEYWORD_ProductName())));}if (StringUtils.ProductUuid())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getProductUuid),ProductUuid())));}if (StringUtils.LogLevel())){String desc = LogLevel(), CommonLogEnum.TIPS_Classification());if (desc != null){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getLogLevel)+ Constants.CHINESE_QUERY_KEYWORD_SUFFIX,desc)));}}if (StringUtils.EventType())){String desc = EventType(), CommonLogEnum.DEVICE_ONLINE_Classification());if (desc != null){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getEventType)+ Constants.CHINESE_QUERY_KEYWORD_SUFFIX,desc)));}}if (StringUtils.EventName())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getEventName)+ Constants.CHINESE_QUERY_KEYWORD_EventName())));}if (StringUtils.EventDetail())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getEventDetail)+ Constants.CHINESE_QUERY_KEYWORD_EventDetail())));}if (StringUtils.Source())){String desc = Source(), CommonLogEnum.DEVICE_Classification());if (desc != null){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getSource)+ Constants.CHINESE_QUERY_KEYWORD_SUFFIX,desc)));}}if (StringUtils.SourceDetail())){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.FieldName(DeviceLog::getSourceDetail),SourceDetail())));}if (StartTime() != null && EndTime() != null){nativeSearchQueryBuilder.withFilter(boolQueryBuilder.must(QueryBuilders.FieldName(DeviceLog::getRecordTimestamp)).StartTime()).EndTime())));}if (PageFlag()!=null && PageFlag().equals(true)){if (PageNum() != null && PageSize() !=null ){nativeSearchQueryBuilder.withPageable(PageRequest.PageNum().intValue(), PageSize().intValue()));}}}
}

本文发布于:2024-01-31 01:35:50,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170663615424394.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:springboot   es
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23