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

es1.7.2 按照_type先聚合,再按照时间二次聚合

 // 设置查询条件if (this.query != null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation = AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder = AggregationBuilders.dateHistogram("agg_pubtime").field("pubtime");dateTermsBuilder.format("yyyy-MM-dd");dateTermsBuilder.interval(DateHistogram.Interval.days(1));dateTermsBuilder.subAggregation(typeAggregation);searchbuilder.addAggregation(dateTermsBuilder);SearchResponse sr = searchbuilder.execute().actionGet();Map<String, Aggregation> aggMap = sr.getAggregations().asMap();DateHistogram classTerms = (DateHistogram)aggMap.get("agg_pubtime");Iterator<org.elasticsearch.search.aggregations.bucket.histogram.DateHistogram.Bucket> classBucketIt = (Iterator<Bucket>) classTerms.getBuckets().iterator();List<Map<String,Object>> dataList = new ArrayList<Map<String,Object>>();List<String[]> result = new ArrayList();while(classBucketIt.hasNext()){Map<String,Object> res = new HashMap<String, Object>();org.elasticsearch.search.aggregations.bucket.histogram.DateHistogram.Bucket classBucket = classBucketIt.next();//System.out.println("时间"+classBucket.getKey());StringTerms agg_type = (StringTerms) classBucket.getAggregations().asMap().get("agg_type");List<Terms.Bucket> buckets = (List<Terms.Bucket>) agg_type.getBuckets();List<String[]> list = new ArrayList<String[]>();for (Terms.Bucket bucket : buckets) {String[] str = new String[2];str[0] = bucket.getKey().trim();//日期str[1] = String.valueOf(bucket.getDocCount());//数量
//                list.add(str);//System.out.println( str[0]  +"======"   + str[1] );}}

参考:gpt

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.common.unit.TimeValue;import java.io.IOException;
import java.util.concurrent.TimeUnit;public class AggregationExample {public static void main(String[] args) throws IOException {// 创建 Elasticsearch 客户端RestHighLevelClient client = createClient();// 创建聚合请求SearchRequest searchRequest = new SearchRequest("your_index_name");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 设置查询条件searchSourceBuilder.query(QueryBuilders.matchAllQuery());// 设置第一级聚合,按照 _type 字段进行聚合Terms.AggregationBuilder typeAggregation = AggregationBuilders.terms("by_type").field("_type");// 设置第二级聚合,按照时间进行聚合,这里使用日期直方图(Histogram)聚合Terms.BucketOrder termsOrder = Terms.BucketOrder.key(true);typeAggregation.subAggregation(AggregationBuilders.dateHistogram("by_time").field("your_time_field").dateHistogramInterval(DateHistogramInterval.DAY).subAggregation(AggregationBuilders.terms("top_hits").size(10).order(termsOrder)));// 添加聚合请求到搜索源中searchSourceBuilder.aggregation(typeAggregation);// 设置分页和超时时间searchSourceBuilder.size(0);searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));// 发起搜索请求并获取响应searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);// 解析聚合结果Terms byTypeAggregation = searchResponse.getAggregations().get("by_type");for (Terms.Bucket typeBucket : byTypeAggregation.getBuckets()) {System.out.println("Type: " + typeBucket.getKeyAsString());Terms byTimeAggregation = typeBucket.getAggregations().get("by_time");for (Terms.Bucket timeBucket : byTimeAggregation.getBuckets()) {System.out.println("Time: " + timeBucket.getKeyAsString());Terms topHitsAggregation = timeBucket.getAggregations().get("top_hits");for (Terms.Bucket hitBucket : topHitsAggregation.getBuckets()) {System.out.println("Hit: " + hitBucket.getKeyAsString());}}}// 关闭 Elasticsearch 客户端client.close();}private static RestHighLevelClient createClient() {// 创建和配置 Elasticsearch 客户端RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));return client;}
}

相关文章:

es1.7.2 按照_type先聚合,再按照时间二次聚合

// 设置查询条件if (this.query ! null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder AggregationBuilders.dateHistogram(…...

pyqt5 如何修改QplainTextEdit 背景色和主窗口的一样颜色

如果您希望将 QPlainTextEdit 的背景颜色设置为与窗口背景相似的灰色&#xff0c;您可以使用窗口的背景颜色作为基准来设置 QPlainTextEdit 的背景颜色。以下是一个示例代码&#xff0c;展示如何实现这一点&#xff1a; from PyQt5.QtWidgets import QApplication, QMainWindo…...

解决使用element ui时el-input的属性type=number,仍然可以输入e的问题。

使用element ui时el-input的属性typenumber&#xff0c;仍然可以输入e&#xff0c; 其他的中文特殊字符都不可以输入&#xff0c;但是只有e是可以输入的&#xff0c;原因是e也输入作为科学计数法的时候&#xff0c;e是可以被判定为数字的&#xff0c; 但是有些场景是需要把e这种…...

ShardingSphere 可观测 SQL 指标监控

ShardingSphere并不负责如何采集、存储以及展示应用性能监控的相关数据&#xff0c;而是将SQL解析与SQL执行这两块数据分片的最核心的相关信息发送至应用性能监控系统&#xff0c;并交由其处理。 换句话说&#xff0c;ShardingSphere仅负责产生具有价值的数据&#xff0c;并通过…...

Redisson实现分布式锁示例

一、引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.0</version></dependency>二、配置类 import org.redisson.Redisson; import org.redisson.api.RedissonClient;…...

使用Nginx作为一个普通代理服务器

使用Nginx作为一个普通代理服务器, 请不要用于违法用途哦 nginx作为一个反向代理工具&#xff0c;除了可以进行反向代理之外&#xff0c;还可以用来作为代理工具来使用&#xff0c;作为代理工具使用的步骤如下&#xff0c;这个配置目前支持80端口 Windows系统代理设置对应IP, …...

chatglm2-6b模型在9n-triton中部署并集成至langchain实践 | 京东云技术团队

一.前言 近期&#xff0c; ChatGLM-6B 的第二代版本ChatGLM2-6B已经正式发布&#xff0c;引入了如下新特性&#xff1a; ①. 基座模型升级&#xff0c;性能更强大&#xff0c;在中文C-Eval榜单中&#xff0c;以51.7分位列第6&#xff1b; ②. 支持8K-32k的上下文&#xff1b…...

Shell编程之正则表达式(非常详细)

正则表达式 1.通配符和正则表达式的区别2.基本正则表达式2.1 元字符 &#xff08;字符匹配)2.2 表示匹配次数2.4 位置锚定2.5 分组 和 或者 3.扩展正则表达式4.部分文本处理工具4.1 tr 命令4.2 cut命令4.3 sort命令4.4 uniq命令 1.通配符和正则表达式的区别 通配符一般用于文件…...

RNN模型简单理解和CNN区别

目录 神经网络&#xff1a;水平方向延伸&#xff0c;数据不具有关联性 ​ RNN&#xff1a;在神经网络的基础上加上了时间顺序&#xff0c;语义理解 ​RNN: 训练中采用梯度下降&#xff0c;反向传播 ​ 长短期记忆模型 ​输出关系&#xff1a;1 toN&#xff0c;N to N 单入…...

【Axure高保真原型】JS日期选择器筛选中继器表格

今天和大家分享JS日期选择器筛选中继器表格的原型模板&#xff0c;通过调用浏览器的日期选择器&#xff0c;所以可以获取真实的日历效果&#xff0c;具体包括哪一年二月份有29天&#xff0c;几号对应星期几&#xff0c;都是真实的&#xff0c;获取日期值后&#xff0c;通过交互…...

android bp脚本

一。android大约从7.0开始引入 .bp文件代替以前的.mk文件&#xff0c;用于帮助android项目的编译配置文件。 二。mk文件转化为bp文件&#xff0c;可以使用下面命令转化&#xff0c;注意命令中>&#xff0c;这是写入文件。androidmk是android源码自带的工具&#xff0c;他可…...

Redis 数据库 NoSQL

目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值&#xff08;Key-Value&#xff09;存储数据库 列存储数据库 文档型数据库 图形&#xff08;Graph&#xff09;数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE 一、NoSQL NoS…...

RN 项目异常问题整理

常见问题 无法找到 CardStackStyleInterpolator StackViewStyleInterpolator 这个方法集来代替 CardStackStyleInterpolator的&#xff0c;这个方法集的路径也需要注意一下&#xff0c;在2.12.1版本之前&#xff0c; 该文件在react-navigation/src/views/StackView/中&#xf…...

STM8编程[TIM1多路PWM输出选项字节(Option Byte)操作和IO复用]

TIM1多路PWM输出选项字节(Option Byte)操作和IO复用 本文摘录于&#xff1a;https://blog.csdn.net/freeape/article/details/47008033只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 代码上要使用TIME1输出3路PWM,代码如下: void tim…...

Java算法_ 反转二叉树(LeetCode_Hot100)

题目描述&#xff1a;给你一棵二叉树的根节点 &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。root。 获得更多&#xff1f;算法思路:代码文档&#xff0c;算法解析的私得。 运行效果 完整代码 /*** 2 * Author: LJJ* 3 * Date: 2023/8/16 13:18* 4*/public class In…...

C/C++ 标准模版库STL(持续更新版)

标准模版库STL 目录 算法库 栈 队列 向量 映射 列表 双向链表 集合 Iterator 送代器 <algorithm> 算法库 max, min 用于找出一组值中的最大值和最小值 swap 用于交换两个变量的值 sort 用于对一个范围内的元素进行排序 lower_bound, upper_bound 用于在已排序的容器…...

ARM(实验二)

uart4.h #ifndef __H__ #define __H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h"//RCC/GPIO/UART4章节初始化 void hal_uart4_init();//发送一个字符函数 void hal_put_char(const char str);//发…...

由“美”出发 听艺术家林曦关于美育与智慧的探讨

不久前&#xff0c;林曦老师与我们的老朋友「十点读书」进行了一次线上直播&#xff0c;有关林曦老师十余年的书法教学&#xff0c;和传统美育的心得&#xff0c;以及因此诞生的新书《无用之美》。      这一次的直播&#xff0c;由“美”的主题出发&#xff0c;延伸出美育…...

Serial与Parallel GC之间的不同之处是什么?

Serial GC(串行垃圾回收器)和Parallel GC(并行垃圾回收器)都是Java虚拟机(JVM)中用于进行垃圾回收的两种基本算法。它们在性能、资源利用和回收效率等方面存在一些不同之处。下面是它们之间的详细比较&#xff1a; 1.工作方式 Serial GC&#xff1a;它是一种单线程的垃圾回收器…...

GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放

技术背景 我们在对接GB28181设备接入模块的时候&#xff0c;遇到这样的技术诉求&#xff0c;好多开发者期望能提供编码后&#xff08;H.264/H.265、AAC/PCMA&#xff09;数据对接&#xff0c;确保外部采集设备&#xff0c;比如无人机类似回调过来的数据&#xff0c;直接通过模…...

Java微服务在Istio中出现“偶发503 no healthy upstream”?7分钟定位Sidecar健康检查盲区与Liveness Probe冲突真相

第一章&#xff1a;Java微服务在Istio中偶发503问题的现象与影响在基于Istio构建的服务网格环境中&#xff0c;Java微服务&#xff08;尤其是采用Spring Cloud Kubernetes或原生Spring Boot Istio Sidecar部署模式&#xff09;频繁出现偶发性HTTP 503 Service Unavailable响应…...

git clone git@github.com: Permission denied (publickey)权限拒绝问题

一、前言最近在部署detectron2&#xff08;Facebook开源的目标检测框架&#xff09;时&#xff0c;执行克隆命令&#xff1a;git clone gitgithub.com:facebookresearch/detectron2.git终端直接抛出如下错误&#xff1a;Cloning into detectron2... gitgithub.com: Permission …...

保姆级教程:NotaGen一键部署,小白也能生成贝多芬风格交响乐

保姆级教程&#xff1a;NotaGen一键部署&#xff0c;小白也能生成贝多芬风格交响乐 1. 引言&#xff1a;AI音乐创作新体验 你是否曾经梦想过创作一首属于自己的交响乐&#xff1f;现在&#xff0c;NotaGen让这个梦想变得触手可及。这个基于大语言模型(LLM)的音乐生成工具&…...

【linux】linux权限的详细讲解

一、Linux 权限的概念 1.1、用户分类 Linux下有两种用户&#xff1a;超级用户 (root) 与 普通用户超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;几乎不受权限的限制&#xff1b; 普通用户&#xff1a;在linux下做权限范围内的事情&#xff1b; 超级用户的命令提…...

避坑指南:微信小程序递归组件的3个常见错误(以tree组件为例)

微信小程序递归组件开发避坑指南&#xff1a;以Tree组件为例 递归组件是前端开发中处理嵌套数据结构的利器&#xff0c;但在微信小程序中实现时&#xff0c;不少开发者容易陷入一些典型陷阱。我曾在一个电商后台管理系统项目中&#xff0c;因为递归组件的状态更新问题导致整个商…...

AI爱好者成长手册:从“会用”到“用好”主流大模型的进阶之路

许多AI爱好者在使用大模型一段时间后会陷入一个困惑&#xff1a;为什么别人能用AI写出惊艳的文案、完成复杂的分析&#xff0c;而自己却总是得到平庸的结果&#xff1f;答案往往不在于模型的选择&#xff0c;而在于使用方式。经过在RskAi&#xff08;www.rsk.cn&#xff09; 平…...

RK3568上Qt5.12.8编译eglfs报错?手把手教你解决fbdev_window.h缺失问题

RK3568 Qt5.12.8编译eglfs报错全解析&#xff1a;从fbdev_window.h缺失到完整解决方案 在嵌入式开发领域&#xff0c;RK3568作为Rockchip推出的高性能处理器&#xff0c;结合Qt框架的图形界面开发能力&#xff0c;为工业控制、智能终端等场景提供了强大的解决方案。然而&#…...

《跨摄像机目标追踪技术:构建连续身份与空间一致性的关键路径》——从“身份匹配”到“空间连续”的视频智能体系重构

《跨摄像机目标追踪技术&#xff1a;构建连续身份与空间一致性的关键路径》——从“身份匹配”到“空间连续”的视频智能体系重构发布单位&#xff1a;镜像视界&#xff08;浙江&#xff09;科技有限公司一、问题定义&#xff1a;什么叫“真正的跨摄像机追踪”&#xff1f;在多…...

使用seo站点管理系统需要注意哪些事项

SEO站点管理系统的核心注意事项 在当今数字化时代&#xff0c;SEO站点管理系统&#xff08;Site Management System for SEO&#xff09;是网站运营和推广的关键工具。它不仅能帮助提升网站在搜索引擎中的排名&#xff0c;还能带来更多的流量和转化。要真正利用这一工具&#x…...

Agent调试技巧:LangSmith与日志分析

Agent开发最痛苦的部分是调试。传统代码调试&#xff0c;你能看到每一行执行的结果。Agent调试&#xff0c;你只能看到"输入 → 输出"&#xff0c;中间的推理过程是个黑盒。 这篇文章&#xff0c;我们讨论Agent调试的方法和工具&#xff1a;怎么追踪Agent的推理过程…...