探索数据的力量:Elasticsearch中指定链表字段的统计查询记录

目录

一、基本的数据结构说明

二、基本的统计记录

(一)统计当前索引中sellingProducts的所有类型

(二)检索指定文档中sellingProducts的数据总量

(三)检索指定文档中sellingProducts指定类型的数量统计

(四)统计所有文档中sellingProducts中所有元素的总数

(五)统计所有文档中sellingProducts中详细分类总数统计

三、总结


干货分享,感谢您的阅读!

在当今数据驱动的时代,企业和组织面临着海量数据的挑战,如何有效地提取和分析这些数据已成为关键问题。Elasticsearch作为一种强大的搜索和分析引擎,提供了灵活而高效的数据检索能力,能够帮助我们快速获取所需信息。本篇文章将深入探讨在Elasticsearch中对sellingProducts字段的统计操作。

通过具体的案例和查询示例,我们将展示如何从sell_product_order索引中提取出关键信息,包括产品类型的统计、产品数量的计算以及更复杂的聚合查询。无论是想要了解产品销售状况的市场分析师,还是希望提升数据处理能力的开发者,本文都将为你提供实用的参考和技术支持。

在接下来的部分中,我们将逐步介绍基本的数据结构、关键的统计操作以及相应的Elasticsearch查询语法,帮助读者掌握在实际应用中如何进行数据统计和分析。通过这次学习,我们希望读者能够更加熟悉Elasticsearch的使用,并在实际工作中充分利用这一强大的工具,挖掘出数据背后的价值。

一、基本的数据结构说明

对应ES索引:sell_product_order

针对假设ES文档的基本结构内容如下:

   {"id": "2024041801000115936701","sellingProducts": ["FUND_20150718000230030000000000002549","STOCK_656","STOCK_4055","STOCK_1720","FUND_20180920000230030000000000015303"]}

我们针对里面的sellingProducts字段进行一些基本的统计操作,本次记录一下相关的基本操作。

二、基本的统计记录

(一)统计当前索引中sellingProducts的所有类型

sell_product_order 索引中检索数据,然后根据 sellingProducts 字段中的内容,聚合出售产品的类型信息,并返回前 10 个最频繁出现的产品类型。

GET /sell_product_order/_search
{"size": 0,"aggs": {"types": {"terms": {"script": {"source": """HashSet types = new HashSet();for (item in doc['sellingProducts']) {int delimiterIndex = item.indexOf('_');if (delimiterIndex > -1) {types.add(item.substring(0, delimiterIndex));}}return types;""","lang": "painless"},"size": 10 }}}
}

(二)检索指定文档中sellingProducts的数据总量

从索引为 sell_product_order 中检索数据,并返回指定 _id 的文档,并在结果中包含一个名为 sellingProducts_count 的脚本字段,用于计算每个文档中 sellingProducts 字段的大小。

GET /sell_product_order/_search
{"query": {"terms": {"_id": ["2024041801000115936701"  ]}},"script_fields": {"sellingProducts_count": {"script": {"lang": "painless","source": "doc['sellingProducts'].size()" }}}
}

(三)检索指定文档中sellingProducts指定类型的数量统计

sell_product_order 索引中检索具有指定 _id 的文档,并在结果中返回两个计算字段,分别是 fund_countstock_count,它们分别表示文档中以 'FUND_''STOCK_' 开头的元素的数量。

GET /sell_product_order/_search
{"query": {"terms": {"_id": ["2024041801000115936701"]}},"script_fields": {"fund_count": {"script": {"lang": "painless","source": "int fundCount = 0; for (String item : doc['sellingProducts']) { if (item.startsWith('FUND_')) { fundCount++; } } return fundCount;"}},"stock_count": {"script": {"lang": "painless","source": "int stockCount = 0; for (String item : doc['sellingProducts']) { if (item.startsWith('STOCK_')) { stockCount++; } } return stockCount;"}}}
}

(四)统计所有文档中sellingProducts中所有元素的总数

sell_product_order 索引中检索所有文档,并计算 sellingProducts 字段中所有元素的总数,将结果作为 total_sellingProducts_items 的值返回。

GET /sell_product_order/_search
{"size": 0,  "aggs": {"total_sellingProducts_items": {"sum": {"script": {"source": "doc['sellingProducts'].size()","lang": "painless"}}}}
}

(五)统计所有文档中sellingProducts中详细分类总数统计

计算 sellingProducts 字段中以 FUND_ 开头和以 STOCK_ 开头的元素数量,将结果以 fund_countstock_count 的形式返回。

GET /sell_product_order/_search
{"size": 0,"aggs": {"totals": {"scripted_metric": {"init_script": "state.fund_count = 0; state.stock_count = 0;","map_script": """if (doc.containsKey('sellingProducts')) {for (def item : doc['sellingProducts']) {if (item.startsWith('FUND_')) {state.fund_count++;} if (item.startsWith('STOCK_')) {state.stock_count++;}}}""","combine_script": "return state","reduce_script": """def total_fund_count = 0;def total_stock_count = 0;for (state in states) {total_fund_count += state.fund_count;total_stock_count += state.stock_count;}return ['fund_count': total_fund_count, 'stock_count': total_stock_count];
"""}}}
}

三、总结

在本文中,我们探讨了如何在Elasticsearch中对sell_product_order索引中的sellingProducts字段进行基本的统计操作。通过具体的查询示例,我们展示了多种数据检索和聚合的技巧,帮助我们从海量数据中提取出有价值的信息。

首先,我们介绍了数据结构的基本概念,明确了如何定位目标字段。随后,我们演示了几种不同的统计方法,包括计算产品类型的出现频率、检索指定文档中产品数量、以及对产品类型进行细分统计。这些操作不仅为数据分析提供了基础支持,也为业务决策提供了有力的数据依据。

通过这些示例,读者可以看到Elasticsearch的强大灵活性,以及它在处理复杂数据查询时的高效性。这些技巧不仅适用于特定的业务场景,也为进一步的深入分析和数据挖掘奠定了基础。

在未来的应用中,我们鼓励读者继续探索Elasticsearch的更多功能,如更高级的聚合分析和数据可视化工具,以全面提升数据处理能力和决策支持效果。通过不断实践和学习,大家将能更好地掌握这一工具,从而在日益复杂的数据环境中游刃有余。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/909415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

细节致胜:如何重塑反向海淘用户体验

在反向海淘的激烈竞争中,客户体验已成为决定胜负的关键。一次流畅的购物旅程、一个贴心的服务细节,都可能让海外消费者成为品牌的忠实传播者。易境通代购商城系统正是以极致体验为核心,通过精细化服务管理,助力企业赢得用户口碑与…

Docker 分阶段构建

Docker 分阶段构建 Docker 分阶段构建(Multi-stage Build)是一种高效的镜像构建技术,允许在一个 Dockerfile 中使用多个构建阶段,每个阶段可以使用不同的基础镜像,最终只保留需要的文件,从而显著减小镜像体…

人工智能学习23-BP-图像编码

人工智能学习概述—快手视频 人工智能学习23-BP-图像编码—快手视频

k8s的开篇学习和安装

k8s的开篇学习 学习网站 参考资料 1。 K8S能干什么 [概述 | Kubernetes](https://kubernetes.io/zh-cn/docs/concepts/overview/#why-you-need-kubernetes-and-what-can-it-do)需要开代理 2。docker资料 https://docs.docker.com/get-started/3.prometheus资料 https://promet…

CS144 lab0: warmup

Lab 0: networking warmup 1. 环境 依赖配置 sudo apt update && sudo apt install git cmake gdb build-essential clang \clang-tidy clang-format gcc-doc pkg-config glibc-doc tcpdump tsharkg13配置 ppa中科大源 # deb https://ppa.launchpadcontent.net/ubu…

StarRocks

StarRocks 是一个高性能的 分布式 MPP(Massively Parallel Processing)数据库,主要用于 实时数据分析(Real-Time Analytics),是新一代的 OLAP 数据库,对标 ClickHouse、Apache Doris 等。 🌟 一、StarRocks 是什么? StarRocks 是一个面向实时分析场景、支持高并发、高…

8088单板机8259中断的软件触发测试

1.工作原理 8086和8088的中断设计的是很巧妙的,比如给8259的IR1配置了一个中断,中断号为21H,那么当真个引脚出现高电平的时候,就会触发相应上的中断响应。但,这不是唯一能够触发21H中断的方法,还可以通过软…

TC3xx中PFLASH缓存对XCP标定常量的影响

1、TC3xx中PFLASH缓存(Cache)对XCP标定的影响 XCP的映射用到TC3XX的Overlay功能需要使用一段Pflash内存。 Pflash数据有两个段区。分别为0x80000000和0xA0000000为起始地址的PFLASH段。 如上,两段数据的区别是一个段8有CACHE缓存,…

代码审计服务:如何解决误报与漏报难题,保障软件安全?

代码审计服务在保障软件质量、安全合规等方面扮演着关键角色,特别是在数字化浪潮席卷而来的今天,其重要性日益显著。它能揭露代码中的不足,进而为软件开发提供有力的效率和安全性保障。 误报与漏报难题 常规的代码审查工具,其错…

web方向第一次考核内容

一.考核内容 Web组大一下考核之HTML、CSS 1.为什么要清除浮动(4),清除浮动的方法有哪些?(6)(至少两种) 2.怎么实现左边左边宽度固定右边宽度自适应的布局?(10) 3.讲讲flex:1;(10) 4.怎么实现移动端适配不同…

HarmonyOS 5 Cordova有哪些热门插件?

以下是 HarmonyOS 5 环境下 Cordova 的热门插件及核心代码实现(综合实际开发场景高频使用): 一、核心工具类插件 1. ‌高性能图片压缩插件‌ ‌功能‌:直接调用鸿蒙 ImageSource API 实现硬件级加速压缩 ‌代码实现‌&#xff…

Cesium圆锥渐变色实现:融合顶点着色器、Canvas动态贴图与静态纹理的多方案整合

在Cesium中渲染圆锥体时,无论采用顶点着色器、Canvas动态贴图还是静态图片贴图,其渐变色均需满足以下条件: 圆形结构:渐变范围限定在圆锥底面的圆形区域内。径向扩散:颜色从圆心向外逐步变化(如红→黄→蓝…

周末复习1

质量管理包括质量规划,质量保证,质量控制。质量管理体系要定期执行内部审核和管理评审。二者都属于质量保证过程。 实施质量保证的方法很多,过程分析属于实施质量保证的常用方法。 采购管理过程包括编制采购计划,实施采购,控制采购和结束采购…

英飞凌亮相SEMICON China 2025:以SiC、GaN技术引领低碳化与数字化未来

在刚刚落幕的SEMICON China 2025上,全球半导体行业再度汇聚上海,共同探讨产业未来。本届展会以“跨界全球•心芯相联”为主题,覆盖芯片设计、制造、封测、设备及材料等全产业链,充分展现了半导体技术的最新突破与创新趋势。 作为…

工业路由器赋能仓库消防预警,智慧消防物联网解决方案

在现代物流与仓储行业蓬勃发展的当下,仓库的规模与存储密度不断攀升,消防预警的重要性愈发凸显。传统消防系统在应对复杂仓库环境时,预警滞后、设备联动不畅、数据管理困难等弊端逐渐暴露。为了有效解决这些问题,工业路由器作为物…

【开发常用命令】:服务器与本地之间的数据传输

服务器与本地之间的数据传输 本地给服务器上传数据 scp /path/to/local_file usernameremotehost:/path/to/remote_directory例如 scp test.txt root192.168.1.xxx:/test # test.txt 需要上传到服务器的文件,如果非当前路径,使用文件的相对路径或绝对…

springboot + nacos + k8s 优雅停机

1 概念 优雅停机是什么?网上说的优雅下线、无损下线,都是一个意思。 优雅停机,通常是指在设备、系统或应用程序中止运作前,先执行一定的流程或动作,以确保数据的安全、预防错误并保证系统的整体稳定。 一般来说&…

Python 标准库之 math 模块

1. 前言 math 模块中包含了各种浮点运算函数,包括: 函数功能floor向下取整ceil向上取整pow指数运算fabs绝对值sqrt开平方modf拆分小数和整数fsum计算列表中所有元素的累加和copysign复制符号pi圆周率e自然对数 2. math.floor(n) 函数 math.floor(n) 的…

6.14星期六休息一天

Hey guys, Today’s Saturday, and I didn’t have to go to work, so I let myself sleep in a bit — didn’t get up until 8 a.m. My cousin invited me over to his place. He lives in a nearby city, about 80 kilometers away. But honestly, after a long week, I …

event.target 详解:理解事件目标对象

event.target 详解&#xff1a;理解事件目标对象 在 JavaScript 事件处理中&#xff0c;event.target 是一个关键属性&#xff0c;它表示最初触发事件的 DOM 元素。下面我将通过一个可视化示例详细解释其工作原理和使用场景。 <!DOCTYPE html> <html lang"zh-C…