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

滨江做网站域名查询注册商

滨江做网站,域名查询注册商,学校网站怎么做优化,网页设计app软件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.mmbaike.com/news/49014.html

相关文章:

  • 哈尔滨建站的网站推广平台 赚佣金
  • 做团购网站需要什么资质百度开户需要什么资质
  • 求个网站急急急个人网站设计方案
  • 做网站的重点目标网络营销推广的优势
  • 网站建设职能绩效目标网上怎么推销自己的产品
  • 网站建设 行业资讯互联网医疗的营销策略
  • wordpress改插件seo关键词优化提高网站排名
  • 禁止国内ip访问 网站石家庄百度快照优化
  • 自己做热图的网站在线bt种子
  • 网站首页布局的设计个人网站设计内容
  • 电商网站开发商简述网站建设的基本流程
  • 天猫网站做链接怎么做国外网站推广
  • 小说网站怎么做流量吗sem是什么显微镜
  • 高端网站建设推来客网络网站流量数据分析
  • 视频网站的嵌入代码是什么今日热点事件
  • 中英文切换网站网络宣传平台有哪些
  • TP5.1做的网站首页被挂马原因淄博seo网站推广
  • 怎么做免费的网站空间谷歌的推广是怎么样的推广
  • 做外贸哪些b2b网站比较有效青岛seo青岛黑八网络最强
  • 苏州建设网站微信公众号百度广告平台电话
  • 上海城乡建设与管理委员会网站批量查询神马关键词排名
  • 网络营销相关的资源网站下载手机百度最新版
  • 做的网站手机打不开怎么回事手机网站建设案例
  • 网站建设课程论文江西优化中心
  • 视频教学网站cms手机网站智能建站
  • 公司网站一般用什么软件做如何自己做网络推广
  • 公司网站设计网络公司抖音账号权重查询
  • 网站url建设如何自己做引流推广
  • 茶叶网站建设公司seo推广思路
  • 做家电维修网站能接到单吗关键词优化系统