当前位置: 首页 > news >正文

网站接入商查询贵阳网站开发公司

网站接入商查询,贵阳网站开发公司,西安网站建设兼职,设计自学网站哪个好1. 引言 在大多数的场景里,存储数据都是用MySQL这类关系型数据库,这类数据库的特点是数据存储安全性和一致性高,可以用于事务操作,但是随着数据量的增加,查询的速度也会随之降低,并且其扩展能力有限&#x…
1. 引言

在大多数的场景里,存储数据都是用MySQL这类关系型数据库,这类数据库的特点是数据存储安全性和一致性高,可以用于事务操作,但是随着数据量的增加,查询的速度也会随之降低,并且其扩展能力有限,因此在日志记录和查询等场景下,MySQL就显得力不从心,为了解决对海量数据的搜索、分析和计算,引入ES(ElasticSearch)搜索引擎。

对于IOT领域,记录设备的控制日志非常的有必要,对于客诉排查或者之后的数据分析起着很重要的作用;假如共有100w的设备,一天控制5次,那一年的数据:

100w * 5 * 365 = 9 亿

因此,为了更为较好地存储和查询数据,对于这种大量增加的数据建议用es来存储。

2. ES使用

接下来就介绍一下,如何利用SpringBoot框架联合es存储和查询数据。

  • 首先引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.7.4</version>
</dependency>

通过引入依赖之后,就可以使用SpringBoot提供的ElasticsearchRestTemplate模版类,在该类中有着很多方法,很方便使用。

  • 配置文件,配置es连接
server:port: 8080spring:elasticsearch:rest:uris: http://127.0.0.1:9200  
#      username:     #用户名
#      password:     #密码connection-timeout: 6000read-timeout: 6000
  • 接着在使用的地方注入ElasticsearchRestTemplate
@Autowired
ElasticsearchRestTemplate elasticsearchRestTemplate;
  • 保存数据,使用es提供save方法
elasticsearchRestTemplate.save(saveBO, getIndex(index_name));// getIndex() 方法
private IndexCoordinates getIndex(String index) {return IndexCoordinates.of(index);
}

在save方法中共有两个入参,第一个参数就是自己想存储的数据,里面的字段根据业务自定义,第二参数就是定义一个在es中的索引,其索引就像MySQL中的表名字。

  • 查询es中的数据
public List query(QueryParam queryParam){// 构建查询的条件BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();// 查询条件1:设备idif (!StringUtil.isEmpty(queryParam.getApplianceId())) {queryBuilder.filter(QueryBuilders.termQuery("applianceId.keyword", queryParam.getApplianceId()));}// 查询条件2:时间区效(开始时间&结速时间需同时传输才生效)if (queryParam.getOperateBeginDate() != null && queryParam.getOperateEndDate() != null) {queryBuilder.filter(QueryBuilders.rangeQuery("operateDate").timeZone("Asia/Shanghai")                   .gte(queryParam.getOperateBeginDate()).lte(queryParam.getOperateEndDate()));}// 实现查询条件组装,设置分页中的起始页和每页大小。NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(queryBuilder).withPageable(PageRequest.of(queryParam.getPageNo(), queryParam.getPageSize())).withSorts(SortBuilders.fieldSort("operateDate").order(SortOrder.DESC)).build();// 使用elasticsearchRestTemplate.search查询数据SearchHits<QueryResult> search = elasticsearchRestTemplate.search(nativeSearchQuery, QueryResult.class, getIndex("index_name"));// 提取其中的数据,提出存储的数据QueryResultList<QueryResult> list = search.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());
}

在查询方法中,首先使用BoolQueryBuilder来构建查询的条件,在代码中使用设备id和时间进行过滤;使用NativeSearchQueryBuilder构建好查询条件、分页和降序排序;接着使用elasticsearchRestTemplate.search()查询结果;最后使用search.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList())对查询的结果进行提取。

3. 小结

通过以上的步骤就可以使用es存储和查询数据,其中elasticsearchRestTemplate集成度高,只需定义好入参和出参即可,其他基本都是模块化操作,非常简单方便。知道了如何使用,其里面的原理也需要了解下,有机会再探索下。

http://www.yayakq.cn/news/678305/

相关文章:

  • 广州外贸网站建站手把手网站开发
  • 虚拟网站建设步骤木方东莞网站建设技术支持
  • google官网下载安装企业网站seo贵不贵
  • 本科自考哪个专业比较好考咸宁抖音seo收费标准
  • 旅行网站开发需求说明书定制手机网站建设
  • 网站制作背景图片海南网站建设多少钱
  • 网站设计的工作要求邯郸专业做网站地方
  • 南昌seo排名方案seo网上课程
  • 怎么弄自己的网站wordpress 购物网站
  • 哪里有好的免费的网站建设中文网站建设公司排名
  • 桥头镇做网站wordpress能放几个域名
  • 网站wap版影响权重么网页游戏排行榜电脑
  • 推推蛙网站诊断网站建设图文教程
  • 杭州网站制wordpress仿逛
  • 浮梁网站建设电商运营是做什么
  • 网站搭建软件有哪些如何查询企业电话号码
  • 建设网站花多少钱ps做网站效果
  • 青羊区建设局网站php做网站界面代码
  • 长页网站szhome家在深圳
  • 海事网站服务平台财经投资公司网站建设方案
  • 电商网站建设综述网站模板网
  • wordpress网站安全设置网站的默认文档
  • 网站建设排版规定品牌注册和商标注册有什么区别
  • 建设企业网站服务wordpress怎么都是英文
  • 建筑业资质查询网站最新seo快排技术qq
  • 网站因备案关闭seo是什么级别
  • 北京网站制作长沙哪家公司做网站开发做得比较好
  • 哪个网站做律师推广一级A视网站 一级做爰片
  • 常州网站建设公司如何做网站放到百度上需要什么
  • 免费装饰公司网站模板怎么建立一个邮箱