ElasticSearch聚合查询
- 数据准备
索引创建
PUT product
{"mappings": {"properties": {"createtime": {"type": "date"},"desc": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}},"analyzer": "ik_max_word"},"lv": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"name": {"type": "text","analyzer": "ik_max_word","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"pice": {"type": "long"},"tags": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"type": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}
}
数据插入
PUT /product/_doc/1
{"name":"小米手机","desc":"手机中的战斗机","pice":3999,"lv":"旗舰机","type":"手机","createtime":"2020-10-01","tags":["性价比","发烧","不卡顿"]
}PUT /product/_doc/2
{"name":"小米NFC手机","desc":"支持全功能NFC,手机中的滑翔机","pice":4999,"lv":"旗舰机","type":"手机","createtime":"2020-05-21","tags":["性价比","发烧","公交卡"]
}
分组查询
# 不同标签商品数量(按照结果数量降序),和不同类型的商品数量
GET /product/_search
{"size": 0, "aggs": {"tags_group": {"terms": {"field": "tags.keyword","order": {"_count": "desc"}}},"type_group": {"terms": {"field": "type.keyword"}}}
}
指标查询
查询pice的最大值和平均值、以及所有指标聚合值
{"size": 0,"aggs": {"pice_avg": {"avg": {"field": "pice"}},"max_pice": {"max": {"field": "pice"}},"stats_pice": {"stats": {"field": "pice"}}}
}
根据name去重
{"size": 0, "aggs": {"name_count": {"cardinality": {"field": "name.keyword"}}}
}
管道聚合
# 平均价格最低的商品分类
GET /product/_search
{"size": 0,"aggs": {"type_group": {"terms": {"field": "type.keyword"},"aggs": {"avg_pice": {"avg": {"field": "pice"}}}},"min_baucket":{"min_bucket": {"buckets_path": "type_group>avg_pice"}}}
}
基于查询结果的聚合
统计电视的平均价格
GET /product/_search
{"query": {"bool": {"must": [{"term": {"type.keyword": {"value": "电视"}}}]}},"aggs": {"tags_agg": {"avg": {"field": "pice"}}}
}{"query": {"bool": {"filter": [{"term": {"type.keyword": {"value": "电视"}}}]}},"aggs": {"tags_agg": {"avg": {"field": "pice"}}}
}针对聚合后的结果做过滤
{"aggs": {"tags_agg": {"terms": {"field": "tags.keyword"}}},"post_filter": {"term": {"tags.keyword": "性价比"}}
}# 价格大于三千的 价格最小值,平均值 ,所有数据的平均值
GET /product/_search
{"query": {"bool": {"must": [{"range": {"pice": {"gte": 3000}}}]}},"size": 0,"aggs": {"min_pice": {"min": {"field": "pice"}},"avg_pice": {"avg": {"field": "pice"}},"all_avg_pic": {"global": {}, //取消了外层的条件过滤"aggs": {"avg_pic": {"avg": {"field": "pice"}}}},"muti_avg_pic": {"filter": { // 结合外层条件取交集"range": {"pice": {"gte": 4000}}},"aggs": {"avg_pic": {"avg": {"field": "pice"}}}}}
}
聚合排序
过滤出手机耳机 再根据类型分组,计算各统计聚合值(平均,最大,最小),最好喝根据最小值排序
{"size": 0,"query": {"bool": {"filter": {"terms": {"type.keyword": ["手机","耳机"]}}}},"aggs": {"avg_tag_pice": {"terms": {"field": "type.keyword","order": {"pic_stats.min": "desc"}},"aggs": {"pic_stats": {"stats": {"field": "pice"}}}}}
}
常用聚合函数
histogram 函数
统计价格在每个区段(间隔200)的产品数量
{"size": 0, "aggs": {"pice_histogram": {"histogram": {"field": "pice","interval": 200, # 分割间隔"keyed": false, # true,则返回 key_value形式"min_doc_count": 1, # 满足结果大于等于1的带才返回"missing": 0 # 空值默认}}}
}
date_histogram 函数
统计每月产品数量
{"size": 0, "aggs": {"create_time_histogram": {"date_histogram": {"field": "createtime","calendar_interval": "month", # 分割间隔 "fixed_interval" 间隔小最大单位 天"format": "yyyy-MM", # 日期格式"extended_bounds": { # 统计数据时间区段"min": "2020-01","max": "2020-12"},"order": { # 排序"_count": "desc"}}}}
}
统计每月产品数量,再做累加
{"size": 0, "aggs": {"create_time_histogram": {"date_histogram": {"field": "createtime","calendar_interval": "month","min_doc_count": 0,"format": "yyyy-MM", "extended_bounds": {"min": "2020-01","max": "2020-12"}},"aggs": { "sum_age": { # 求每月的总和"sum": {"field": "pice"}},"pice_cumulative_sum":{ # 累加每月总和"cumulative_sum": {"buckets_path": "sum_age"}}}}}
}
percentiles 函数 百分比占比统计, 数量越大统计越准确
{"size": 0, "aggs": {"pice_percentiles": {"percentiles": {"field": "pice","percents": [1,5,25,50,75,95,99]}}}
}
percentile_ranks 函数 范围占比统计 数量越大统计越准确
{"size": 0, "aggs": {"pice_percentiles": {"percentile_ranks": {"field": "pice","values": [2000,4000,6000]}}}
}相关文章:
ElasticSearch聚合查询
数据准备 索引创建 PUT product {"mappings": {"properties": {"createtime": {"type": "date"},"desc": {"type": "text","fields": {"keyword": {"type": …...
【毕设级项目】基于AI技术的多功能消防机器人(完整工程资料源码)
基于AI技术的多功能消防机器人演示效果 竞赛-基于AI技术的多功能消防机器人视频演示 前言: 随着“自动化、智能化”成为数字时代发展的关键词,机器人逐步成为社会经济发展的重要主体之一,“机器换人”成为发展的全新趋势和时代潮流。在可预见…...
【一】【设计模式】类关系UML图
1. 继承(Generalization) 继承是对象间的一种层次关系,允许子类继承并扩展父类的功能。 UML线:带有空心箭头的直线,箭头指向基类(父类)。 class Parent {public void parentMethod() {System.…...
【DevOps基础篇】容器化架构基础设施监控方案
【DevOps基础篇】容器化架构基础设施监控方案 目录 【DevOps基础篇】容器化架构基础设施监控方案要监视什么不同监控系统方案比较1. Datadog2. Prometheus3. ELK(Elasticsearch、Logstash、Kibana)4. Sysdig5. 自行打造!如何选择总结推荐超级课程: Docker快速入门到精通 当…...
【QT】文件流操作(QTextStream/QDataStream)
文本流/数据流(二级制格式) 文本流 (依赖平台,不同平台可能乱码)涉及文件编码 #include <QTextStream>操作的都是基础数据类型:int float string //Image Qpoint QRect就不可以操作 需要下面的 …...
CentOS 7 devtoolset编译addressSanitizer版本失败的问题解决
在我的一个Cent OS7开发环境中,按https://yeyongjin.blog.csdn.net/article/details/134178420的方法升级GCC版本到8.3.1。 这两天,要用Google的addressSanitizer检验内存问题,加上编译参数后,却发现编译不通过。configure时直接退…...
ubuntu2004桌面系统英伟达显卡驱动安装方法
#如何查看显卡型号 lspci | grep -i vga#----output------ 01:00.0 VGA compatible controller: NVIDIA Corporation Device 1f06 (rev a1)根据 Device 后的 值 进入网站查询 pci-ids.ucw.cz/mods/PC/10de?actionhelp?helppci #根据显卡型号,下载对应系统的驱动…...
Java通过Excel批量上传数据!!!
一、首先在前端写一个上传功能。 <template><!-- 文件上传 --><el-upload class"upload-demo" drag action"" :on-change"onChange" :auto-upload"false"><el-icon class"el-icon--upload"><up…...
【PyQT/Pysider】控件背景渐变
默认渐变配色说明 background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 178, 102, 255), stop:0.55 rgba(235, 148, 61, 255), stop:0.98 rgba(0, 0, 0, 255), stop:1 rgba(0, 0, 0, 0));这段样式表使用了qlineargradient函数来创建…...
ChatGPT-4 VS 文心一言4.0
在线体验 地址(含 gpt 3.5 / 4.0,文心 3.5 / 4.0):https://chat.tool4j.com 点击访问 文心一言和ChatGPT-4都是非常强大的自然语言处理模型,它们都能够在对话系统和其他NLP应用中发挥巨大的作用。然而,它们…...
MYSQL------从概述到DQL
数据库(数据管理,数据存储的仓库) 数据库管理系统(操纵和管理数据库的大型软件) SQL是操作关系型的编程语言,是一套标准 MySQL下载安装完成以后,可以进行启动和停止操作,对于启动和停…...
MATLAB算法实战应用案例精讲-【图像处理】图像识别(基础篇)(二)
目录 数字图像处理基本知识 传统图像处理方法进行瑕疵检测 传统算法方向的选择...
Leetcode 3.12
leetcode hot 100 链表1.两两交换链表中的节点2.随机链表的复制3.排序链表 链表 1.两两交换链表中的节点 两两交换链表中的节点 1.必须要设置一个dummy (temp) 结点2.保存第二个节点3.先让第一个节点指向第三个节点4.再让第二个节点指向第一个节点5.最后让dummy指向第二个节点…...
【天池课堂】零基础入门数据挖掘-课程汇总
写在前面: 如果你现在很迷茫,但是又对数据挖掘感兴趣,建议先看看以下两个视频直播,两位大佬亲身讲述自己和数据挖掘的前世今生。 《如何入门数据挖掘竞赛》 鱼遇雨欲语与余。天池明星选手,武汉大学硕士,天…...
表单进阶(3)-上传文件和隐藏字段
上传文件:<input type"file"> 隐藏字段:<input type"hidden" name"" id"" value"带给后端的信息"> 禁用disabled:<button disabled"disabled">注册</bu…...
LLM(大语言模型)常用评测指标-MAP@R
MAPR (Mean Average Precision at R) 是一种用于评估信息检索系统或排序模型效果的评价指标。它特别适用于那些返回一组相关结果的情况,例如搜索引擎或推荐系统。这里的“R”代表返回的相关结果的数量。MAPR 考虑了结果的排名和相关性两个因素。 计算方法 计算平…...
腾讯面经学习笔记
💖 前言 👩🏫 参考地址 💖 操作系统 1. 进程和线程的区别 本质区别 进程是操作系统资源分配的基本单位线程是任务调度和执行的基本单位 开销方面 每个进程都有独立的代码和数据空间(程序上下文)&#…...
北京某中厂凉经
3月12号 大二想着找一份暑假面试,然后就海投。北京某上市公司给了面试,这也是我的第一个面试,听面试官最后的话大概是挂了。 大概回忆一下当时面试的部分内容吧,虽然已经过去一两小时的,而且我属于那种一面完就忘的差…...
离线数仓(五)【数据仓库建模】
前言 今天开始正式数据仓库的内容了, 前面我们把生产数据 , 数据上传到 HDFS , Kafka 的通道都已经搭建完毕了, 数据也就正式进入数据仓库了, 解下来的数仓建模是重中之重 , 是将来吃饭的家伙 ! 以及 Hive SQL 必须熟练到像喝水一样 ! 第1章 数据仓库概述 1.1 数据仓库概念 数…...
python | 类与对象
在 Python 中,我们用关键字 class 来定义类: class Player:pass Player 类中只有一条语句 pass,这是 Python 中的特殊语句,没有实际含义。 Python 在执行到它时也什么都不会做。不过它能够保证结构的完整性。例如,我…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
