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

Elasticsearch 使用terms对long类型日期统计按月销售

索引mapping:

{"properties" : {"_class" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"createDate" : {"type" : "long"},"goodsCode" : {"type" : "keyword"},"id" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"orderNumber" : {"type" : "keyword"},"payDate" : {"type" : "long"},"saleQty" : {"type" : "double"}}}

payDate字段映射为long类型,在使用date_histogram统计时,统计不出想要的效果。

{..."aggs": {"agg_name": {"date_histogram": {"field": "payDate","interval": "1m","format": "yyyy-MM","min_doc_count": 0}}}
}

结果输出的是"yyyy-MM1577836800000",并不是期待的2023-06.

{"key_as_string": "yyyy-MM1577836800000","key": 1577836800000,"doc_count": 3
}

改用terms+script+子聚合方式统计:

{"query": {"range": {"payDate": {"gte": 1685548800000}}},"size":0, "aggs": {"month_sales":{"terms": {"script": {"source": """DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM").withZone(ZoneId.systemDefault());return df.format(Instant.ofEpochMilli(doc['payDate'].value));""","lang":"painless"},"order": {"_key": "asc"}},"aggs": {"sale_sum": {"sum": {"field": "saleQty"}}}}}
}

script:使用脚本把pay格式化成yyyy-MM的字符串。
order:根据日期排序
sale_sum:统计每个桶里面商品销售数量

输出结果:

{"month_sales": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 9723368,"buckets": [{"key": "2023-06","doc_count": 49,"sale_sum": {"value": 77.0}},{"key": "2023-07","doc_count": 217,"sale_sum": {"value": 40012.0}},{"key": "2023-08","doc_count": 2187911,"sale_sum": {"value": 3486633.0}},{"key": "2023-09","doc_count": 2746235,"sale_sum": {"value": 4556942.0}},{"key": "2023-10","doc_count": 2346896,"sale_sum": {"value": 4097690.0}},{"key": "2023-11","doc_count": 2442224,"sale_sum": {"value": 4120708.0}},{"key": "2023-12","doc_count": 2359840,"sale_sum": {"value": 4167825.0}},{"key": "2024-01","doc_count": 3619202,"sale_sum": {"value": 6506941.0}},{"key": "2024-02","doc_count": 2673919,"sale_sum": {"value": 5066871.0}},{"key": "2024-03","doc_count": 3078439,"sale_sum": {"value": 4810836.0}}]}
}

key:每个月份
doc_count:每个月的订单数量
sale_sum:每个月商品销售数量

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 1、springboot3 vue3开发平台-后端-项目构建
  • Go语言之参数传递
  • 判断一个字节中有几位置1,哪几位为1
  • 使用 Vue 和 ECharts 打造动态数据可视化图表
  • vue3大事件管理系统 === 首页 layout 文章分类页面 -
  • 【Neural signal processing and analysis zero to hero】- 2
  • 注册安全分析报告:OneApm
  • 【D3.js in Action 3 精译_020】2.6 用 D3 设置与修改元素样式 + 名人专访(Nadieh Bremer)+ 2.7 本章小结
  • centos5离线安装git
  • 达梦+flowable改造
  • 2024-07-19 Unity插件 Odin Inspector10 —— Misc Attributes
  • TCP滑动窗口和流量控制详解
  • ChatGPT对话:Windows如何将Python训练模型转换为TensorFlow.js格式
  • R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-等高线图-曲线图-热力图-雷达图-韦恩图(二D)
  • FlutterWeb启动耗时优化
  • ----------
  • AWS实战 - 利用IAM对S3做访问控制
  • centos安装java运行环境jdk+tomcat
  • JavaScript 基本功--面试宝典
  • JavaScript 一些 DOM 的知识点
  • Laravel 实践之路: 数据库迁移与数据填充
  • V4L2视频输入框架概述
  • 基于web的全景—— Pannellum小试
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 解析 Webpack中import、require、按需加载的执行过程
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 小程序开发之路(一)
  • 异常机制详解
  • MyCAT水平分库
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​configparser --- 配置文件解析器​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #565. 查找之大编号
  • #QT(一种朴素的计算器实现方法)
  • #图像处理
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Java入门)抽象类,接口,内部类
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (八)Flask之app.route装饰器函数的参数
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Framework 3.5安装教程
  • .net FrameWork简介,数组,枚举
  • .NET Micro Framework初体验
  • .NET单元测试
  • .NET简谈设计模式之(单件模式)
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @Repository 注解
  • [.NET]桃源网络硬盘 v7.4
  • [2016.7.Test1] T1 三进制异或
  • [BUUCTF]-Reverse:reverse3解析
  • [C]整形提升(转载)
  • [CentOs7]iptables防火墙安装与设置