ElastaticSearch--- es多字段聚合
在使用es时,我们经常会用到聚合查询。
简单的聚合查询,已经在前面介绍过,详情见: https://www.cnblogs.com/expiator/p/13843969.html
有时,也会用到多字段聚合查询。类似于Mysql的Group By多个字段。
比如,查询统计各个地区的各个日期,各自的订单总量。
es多字段聚合
DSL的格式,如下所示:
{"size" : 0,"query" : { },"aggregations" : {"自己命名的聚合名称1" : {"terms" : {"field" : "字段名称1","size" : 20000,"order" : {"_term" : "asc"}},"aggregations" : {"自己命名的聚合统计名称2" : {"sum" : {"field" : "字段名称2"}},"自己命名的聚合名称3" : {"terms" : {"field" : "字段名称3","size" : 20,"order" : {"_term" : "asc"}},"aggregations" : {"自己命名的聚合统计名称4" : {"sum" : {"field" : "字段名称4"}}}}}}}
}
示例如下:
{"size" : 0,"query" : { },"aggregations" : {"agg_area" : {"terms" : {"field" : "area","size" : 20000,"order" : {"_term" : "asc"}},"aggregations" : {"sum_area" : {"sum" : {"field" : "amount"}},"agg_day" : {"terms" : {"field" : "day","size" : 20,"order" : {"_term" : "asc"}},"aggregations" : {"sum_day" : {"sum" : {"field" : "amount"}}}}}}}
}
es多字段聚合的java api
示例的代码如下:
public String getAggDSL() {SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.searchSource();//聚合的第二个字段AggregationBuilder dayAgg = AggregationBuilders.terms("agg_day").field("day").order(Terms.Order.aggregation(TERM, true)).size(20).subAggregation(AggregationBuilders.sum("sum_day").field("amount"));//聚合的第一个字段 AggregationBuilder areaDayAgg = AggregationBuilders.terms("agg_area").field("area").order(Terms.Order.aggregation(TERM, true)).size(10000).subAggregation(AggregationBuilders.sum("sum_area").field("amount")).subAggregation(dayAgg); return searchSourceBuilder.query().aggregation(areaDayAgg).size(0).toString(); }
script实现es多字段聚合
es多字段聚合,对性能要求不高的话,可以使用script。
对A,B等多个字段进行聚合,那也可以直接将它们组合起来,形成A和B相关的script,
只要script的值相同,就聚合到同一组。
查询语句如下:
{"size" : 0,"query" : {"bool" : {"filter" : [{"term" : {"过滤字段1" : {"value" : "匹配值"}}},{"term" : {"过滤字段2" : {"value" : "匹配值"}}}]}},"aggregations" : {"聚合名称" : {"terms" : {"script" : {"inline" : "doc['字段名称1'].values +'-'+ doc['字段名称2'].values","lang" : "painless"},"size" : 10000,"order" : {"排序字段" : "desc"}},"aggregations" : {"自已命令的聚合名称" : {"sum" : {"field" : "聚合求和字段"}}}}}}
相关文章:
ElastaticSearch--- es多字段聚合
在使用es时,我们经常会用到聚合查询。 简单的聚合查询,已经在前面介绍过,详情见: https://www.cnblogs.com/expiator/p/13843969.html 有时,也会用到多字段聚合查询。类似于Mysql的Group By多个字段。 比如…...
本周Github有趣开源项目:Rspress等6个
Github有趣的项目、工具和库: 1、sshx 一个基于 Web 的安全协作终端。通过网络进行快速、协作的实时终端共享 特征: 运行一个命令即可与任何人共享您的终端。 在无限画布上调整大小、移动窗口以及自由缩放和平移。 查看其他人的光标实时移动。 连接到…...
【华为OD题库-016】字符串摘要-Java
题目 给定一个字符串的摘要算法,请输出给定字符串的摘要值 1、去除字符串中非字母的符号 2、如果出现连续字符(不区分大小写),则输出:该字符(小)+连续出现的次数 3、如果是非连续的宁符(不区分大小写),则输出:该字符(小写)该字母之…...

生成式AI - Knowledge Graph Prompting:一种基于大模型的多文档问答方法
大型语言模型(LLM)已经彻底改变了自然语言处理(NLP)任务。它们改变了我们与文本数据交互和处理的方式。这些强大的AI模型,如OpenAI的GPT-4,改变了理解、生成人类类似文本的方式,导致各种行业出现…...

深度学习AIR-PolSAR-Seg图像数据预处理
文章目录 深度学习sar图像数据预处理一.图片预处理操作1.log(1x)处理2.sqrt平方化处理 二.原网络训练效果展示原始数据训练效果展示: 三.对比实验1.采用原始数据2.采用取log(1x)后的数据3.采用取平方后归一化处理: 四.总结:五.思考 深度学习s…...

求最大公约数math.gcd()
【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 求最大公约数 math.gcd() [太阳]选择题 下列代码执行输出的结果是? import math print("【执行】print(math.gcd(6, 8))") print(math.gcd(6, 8)) print(&quo…...

数据结构之队列
目录 引言 队列的概念与结构 队列的实现 定义 初始化 销毁 入队 判断队列是否为空 出队 获取队头元素 获取队尾元素 检测队列中有效元素个数 元素访问 源代码 queue.h queue.c test.c 引言 数据结构之路经过栈后,就来到了与栈联系紧密的兄弟—…...
MySQL数据库——存储过程-循环(while、repeat、loop)
目录 while 介绍 案例 repeat 介绍 案例 loop 介绍 案例一 案例二 while 介绍 while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法为: -- 先判定条件,如果条件为true,则执行逻辑&#…...
Django路由
路由系统 1.Django1中的路由1.1 普通形式1.2 分组1.2.1 无名分组1.2.2 有名分组 2. Django2版本2.1 传统的路由2.2 正则表达式路由 3. 路由分发3.1 include(一般使用此方式做路由分发)3.2 手动分发 4. name别名及使用name的反向URL生成4.1 一般情况下的别名使用及反向生成4.2 分…...
头歌实践平台-数据结构-二叉树及其应用
第1关:实现二叉树的创建 #include "binary_tree.h"BiTreeNode* CreatBiTree(char* s, int &i, int len) // 利用先序遍历创建二叉树 // 参数:先序遍历字符串s,字符串初始下标i0,字符串长度len。 // 返回࿱…...

2023.11.11通过html内置“required-star“添加一个红色的星号来表示必填项
2023.11.11通过html内置"required-star"添加一个红色的星号来表示必填项 在HTML中,可以使用标签来为元素添加说明。同时可以通过添加一个红色的星号来表示必填项。 <!DOCTYPE html> <html lang"en"> <head><meta charse…...
pcie【C#】
根据提供的引用内容,使用C#编写PCIE的Demo需要遵循以下步骤:1.连接好硬件后,烧录bit文件,安装PCIe内核驱动,然后重启计算机。2.打开VS工程,创建一个新的C#控制台应用程序项目。3.在项目中添加对C DLL的引用…...

西门子精智屏数据记录U盘插拔问题总结
西门子精智屏数据记录U盘插拔问题总结 注意: 数据记录过程中不允许带电插拔 U 盘! 数据记录的相关功能可参考以下链接中的内容: TIA博途wincc V16 如何进行变量周期归档?...
(论文阅读27/100)Deep Filter Banks for Texture Recognition and Segmentation
27.文献阅读笔记 简介 题目 Deep Filter Banks for Texture Recognition and Segmentation 作者 Mircea Cimpoi, Subhransu Maji, Andrea Vedaldi, 原文链接 http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Cimpoi_Deep_Filter_Banks_2015_CVPR_pap…...
ARMday06(串口)
代码: #include "gpio.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h" void init(); char getc(); void putc(const char data); int main() {init();//初始化putc(j);char …...
Rust字符串详解
文章目录 字符串切片String迭代方法基础字符串方法容量操作增删改查 字符串切片 我们所熟知的由双引号括起来的字符串,在Rust中只是个字符串切片,又叫字符串字面值。这种类型一旦创建,则不可更改。但支持索引,从切片中索引出来的…...

(四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖…...

Window安装MongoDB
三种NOSQL的一种,Redis MongoDB ES 应用场景: 1.社交场景:使用Mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能 2.游戏场景:使用Mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,高效率存储和访问…...

20.有效的括号(LeetCode)
思路:用栈的后进先出的特性,来完成题目的要求 因为C有库,可以直接用,而C语言没有,所以我们直接把写好的栈拷贝上来用。 首先,完成框架的搭建 其次,再实现循环内的部分。1.左括号入栈 2.右括…...
Vue3组件传参之Mitt插件方式
在vue3中$on,$off 和 $once 实例方法已被移除,组件实例不再实现事件触发接口,因此大家熟悉的EventBus便无法使用了。然而我们习惯了使用EventBus,对于这种情况我们可以使用Mitt库(其实就是我们视频中讲的发布订阅模式的…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...