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

wordpress站点图标苏州行业网络推广排名稳定

wordpress站点图标,苏州行业网络推广排名稳定,河北省建设厅网站手机版,网站备案背景幕布前言 之前其实写过ES查询数据#xff0c;进行分组聚合统计#xff1a; 复杂聚合分组统计实现 一、目标场景 机房机柜的物联网设备上传环境数据#xff0c;会存储到ES存到ES的温湿度数据需要查询#xff0c;进行分组后#xff0c;再聚合统计求平均值 二、使用步骤 1.引入…前言 之前其实写过ES查询数据进行分组聚合统计 复杂聚合分组统计实现 一、目标场景 机房机柜的物联网设备上传环境数据会存储到ES存到ES的温湿度数据需要查询进行分组后再聚合统计求平均值 二、使用步骤 1.引入库 我这里因为ES服务已经升级到8.0.0了然后ES数据查询分组我这里需要对时间进行格式化再聚合avg所以客户端相关版本用的7.17.4 dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-client/artifactIdversion7.17.4/versionexclusionsexclusiongroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactId/exclusion/exclusions /dependency dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.17.4/versionexclusionsexclusiongroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactId/exclusion/exclusions /dependencydependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdversion7.17.4/version /dependency2.配置类 目前我们就是单服务的这个配置类够用了。其实我配置类就是要把RestHighLevelClient注入并交给spring管理。 /*** ES配置类* author zwmac*/ Configuration Data public class ElasticSearchConfig {Value(${es.host})private String host;Value(${es.port})private int port;Value(${es.username})private String loginName;Value(${es.password})private String password;private RestHighLevelClient client;Beanpublic RestHighLevelClient client() {final CredentialsProvider credentialsProvider new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(loginName, password));HttpHost[] httpHostArray new HttpHost[1];httpHostArray[0] new HttpHost(host, port);RestClientBuilder restClientBuilder RestClient.builder(httpHostArray).setHttpClientConfigCallback(httpClientBuilder - {httpClientBuilder.disableAuthCaching();return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);});restClientBuilder.setRequestConfigCallback(requestConfigBuilder - requestConfigBuilder.setConnectTimeout(60000).setSocketTimeout(150000));client new RestHighLevelClient(restClientBuilder);return client;} }3.使用 Resourceprivate RestHighLevelClient restHighLevelClient;/*** 查询温湿度24小时平均值* param deviceCode 设备编码* param startTime 开始时间* param endTime 结束时间* param humName 湿度字段名* param tempName 温度字段名* return 温湿度24小时平均值*/private TreeMapString, MapString, Double queryTempHumDayAvg(String deviceCode, Date startTime, Date endTime, String humName, String tempName) {TreeMapString, MapString, Double treeMap new TreeMap();//ES查询String index EsCalendar.getDeviceFlowIndex(startTime, endTime);SearchRequest searchRequest new SearchRequest(index);SearchSourceBuilder searchSourceBuilder new SearchSourceBuilder();//忽略不可用索引允许索引不不存在通配符表达式将扩展为打开的索引searchRequest.indicesOptions(IndicesOptions.fromOptions(true, true, true, false));String timeFmt yyyy-MM-dd;// 组装ES请求数据String startTimeStr DateUtil.format(startTime, DatePattern.NORM_DATETIME_PATTERN);String endTimeStr DateUtil.format(endTime, DatePattern.NORM_DATETIME_PATTERN);QueryBuilder rangeQuery QueryBuilders.rangeQuery(createTime).lte(endTimeStr).gte(startTimeStr);BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery();// 必须为deviceCodeboolQueryBuilder.must(QueryBuilders.termQuery(deviceCode, deviceCode));rangeQuery QueryBuilders.boolQuery().must(rangeQuery).must(boolQueryBuilder);QueryBuilder boolQuery QueryBuilders.boolQuery().must(rangeQuery);searchSourceBuilder.query(boolQuery).size(0);//平均值 温度//String tempName temp_avg;String tempAvgName tempName _avg;String tempFactorName data. tempName;AvgAggregationBuilder tempAvgAggregationBuilder AggregationBuilders.avg(tempAvgName).field(tempFactorName);//平均值 湿度//String humName hygrometer_avg;String humAvgName humName _avg;String humFactorName data. humName;AvgAggregationBuilder humAvgAggregationBuilder AggregationBuilders.avg(humAvgName).field(humFactorName);String createTimeGroup createTimeGroup;DateHistogramAggregationBuilder aggregation AggregationBuilders.dateHistogram(createTimeGroup).field(createTime).fixedInterval(DateHistogramInterval.DAY).format(timeFmt)//过滤掉count为0的数据.minDocCount(1).subAggregation(tempAvgAggregationBuilder).subAggregation(humAvgAggregationBuilder);//分组条件searchSourceBuilder.aggregation(aggregation);searchRequest.source(searchSourceBuilder);// 按照因子列表查询searchRequest.source(searchSourceBuilder);SearchResponse searchResponse null;MapString, MapString, Double mp new HashMap();try {log.info(方法getCabinetTempHum24HourAvg查询ES请求数据 searchRequest);searchResponse restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);log.info(方法getCabinetTempHum24HourAvg查询ES响应数据 searchResponse.toString());Aggregations aggregations searchResponse.getAggregations();if (aggregations ! null) {//组织出参数aggregations.forEach(agg - {ParsedDateHistogram parsedDateHistogram (ParsedDateHistogram) agg;List buckets parsedDateHistogram.getBuckets();if (CollectionUtil.isNotEmpty(buckets)) {buckets.forEach(bucket - {ParsedDateHistogram.ParsedBucket timeGroupTerm (ParsedDateHistogram.ParsedBucket) bucket;String timeStr timeGroupTerm.getKeyAsString();Aggregations subAggregations timeGroupTerm.getAggregations();if (subAggregations ! null) {MapString, Double tempHumMap new HashMap();MapString, Aggregation subAggMap subAggregations.asMap();if (subAggMap ! null) {Aggregation tempAgg subAggMap.get(tempAvgName);if (tempAgg ! null) {ParsedAvg tempAggPdh (ParsedAvg) tempAgg;tempHumMap.put(tempName, tempAggPdh.getValue());}Aggregation humAgg subAggMap.get(humAvgName);if (humAgg ! null) {ParsedAvg humAggPdh (ParsedAvg) humAgg;tempHumMap.put(humName, humAggPdh.getValue());}}mp.put(timeStr, tempHumMap);}});}});}//数据补全ListDateTime dateTimeList DateUtil.rangeToList(startTime, DateUtil.offsetHour(endTime, -1), DateField.HOUR_OF_DAY);if (CollectionUtil.isNotEmpty(dateTimeList)) {String finTempName temp_avg;String finHumName hum_avg;dateTimeList.forEach(dateTime - {String timeStr DateUtil.format(dateTime, timeFmt);MapString, Double finTempHumMap new HashMap();MapString, Double tempHumMap mp.get(timeStr);if (tempHumMap null) {finTempHumMap.put(finTempName, 0.0);finTempHumMap.put(finHumName, 0.0);} else {Double tempAvg tempHumMap.get(tempName);Double humAvg tempHumMap.get(humName);finTempHumMap.put(finTempName, tempAvg);finTempHumMap.put(finHumName, humAvg);}treeMap.put(timeStr, finTempHumMap);});}} catch (Exception e) {log.error(方法countByEs查询ES异常, e);}return treeMap;}关键点注意 QueryBuilders.rangeQuery传入的时间精度需要yyyy-MM-dd HH:mm:ss,否则会报错 这里对时间格式化分组使用的是DateHistogramAggregationBuilder 这个在EsApi7就废弃了calendarInterval替换新的fixedInterval 分组再聚合注意嵌套关系各位自己理解下subAggregation 最后数据查询出来后迭代解析注意理解ParsedDateHistogram取值、parsedDateHistogram.getBuckets()、迭代解析 总结 gs一直用老版本的ES6这次终于被逼的更新了吧真好。之前一直建议、希望都。。。。本来很想引入EasyEs用用但是总有同事不认可算了之前也建议给ES装上sql-package插件让DBeaver可以连接试过一阵子新版本又没装算了其他就没啥好说的了唯一就是restHighLevelClient现在在7也被标记为过时了下次有机会这个再改改。希望能帮到大家uping
http://www.zqtcl.cn/news/760072/

相关文章:

  • 网站名查找wordpress评论人
  • 网络推广最好的网站有哪些wordpress怎么用万网域名
  • 大连仟亿科技网站建设公司 概况网络信用贷款哪个好
  • 配置了iis打不开网站外贸建站哪个最便宜
  • 酒店网站建设描述免费建站网站有哪些
  • 做宠物的网站主题思想网站建设 司法公开的需要
  • 建站图标素材前端面试题2022
  • 宁夏住房建设厅网站官网最新版cmsv6
  • 网站建设备案和免备案的区别建网站视频教程
  • 网站推广话术wordpress主题没法用
  • 微信网站开发 全屏包头教育云平台网站建设
  • 诸城手机网站建设做竞价网站
  • 网站策划报告公司简介模板范文高大上
  • 做信息图的免费网站如何获取网站是哪个公司制作
  • 乐清建设网站哪家好seo一个月赚多少钱
  • 哈尔滨专业官网建站企业h5公众号开发
  • 商城网站建设精英wordpress实例配置
  • 国内网站开发语言模板兔自用主题WordPress
  • 天津营销网站建设公司哪家好市场营销平台
  • 上海企业响应式网站建设推荐网站建设类织梦模板
  • 洛阳最好的做网站的公司哪家好信誉好的邢台做网站
  • 织梦 旅游网站模板seo百家外链网站
  • 做网站提升公司形象摄影网站建设任务书
  • wordpress建站不好用wordpress共用用户多站点
  • 企业网站设计请示杭州做企业网站的公司
  • 苏宁易购网站建设的不足之处wordpress myisam
  • 互联网站建设维护是做什么的网站建设模板成功案例
  • 制作网站需要什么语言wordpress 免签约支付宝
  • 西安网站开发的未来发展易企网络网站建设
  • 贵州做网站怎么推广vs2012 做网站教程