举个栗子说明elasticsearch 的 scripted metric aggregation
说明scripted metric aggregation 的用法。
POST /dd/doc/_bulk?refresh
{"index":{"_id":1}}
{"name": "productA", "price": 1}
{"index":{"_id":2}}
{"name": "productA", "price": 2}
{"index":{"_id":3}}
{"name": "productB", "price": 3}
{"index":{"_id":4}}
{"name": "productB", "price": 4}
{"index":{"_id":5}}
{"name": "productC", "price": 5}
{"index":{"_id":6}}
{"name": "productC", "price": 6}POST dd/_search?size=0
{"size": 0, "query" : {"match_all" : {}},"aggs": {"profit": {"scripted_metric": {"init_script" : "params._agg.transactions = []","map_script" : "params._agg.transactions.add(doc.price.value == -1 ? 0 : 2 * doc.price.value)", "combine_script" : "double profit = 0; for (t in params._agg.transactions) { profit += t } return profit","reduce_script" : "double profit = 0; for (a in params._aggs) { profit += a } return profit"}}}
}
## 说明, 以上脚本作用,类似于sum .
脚本里面的语句语法是grovvy 语法,
init_script: 定义参数: 参数名字必须是 params.agg 开头然后跟着参数名字。 此处定义了一个数组变量transactions map_script: 对每个分片中的每条数据,进行一样的操作。 操作在每个分片中进行。上面是在每个分片上,初始化数组。 combine_script: 同样是在每个分片中操作, 统计每个分片中,数组的和。 reduce_script: 最后把各个分片中统计的结果进行返回一个节点,然后进行求和,返回的结果,保存在params._aggs 中。```shell# 其余例子:
PUT /transactions/stock/_bulk?refresh
{"index":{"_id":1}}
{"type": "sale","amount": 80}
{"index":{"_id":2}}
{"type": "cost","amount": 10}
{"index":{"_id":3}}
{"type": "cost","amount": 30}
{"index":{"_id":4}}
{"type": "sale","amount": 130}如下是求盈利的总和。
cost 是成本
sale 是销售价格POST ledger/_search?size=0
{"query" : {"match_all" : {}},"aggs": {"profit": {"scripted_metric": {"init_script" : "params._agg.transactions = []","map_script" : "params._agg.transactions.add(doc.type.value == 'sale' ? doc.amount.value : -1 * doc.amount.value)", "combine_script" : "double profit = 0; for (t in params._agg.transactions) { profit += t } return profit","reduce_script" : "double profit = 0; for (a in params._aggs) { profit += a } return profit"}}}
}
举个栗子说明elasticsearch 的 scripted metric aggregation相关推荐
- 聚合中返回source_大数据搜索与可视化分析(9)elasticsearch聚合分析Metric Aggregation...
在上一篇文章中,我们介绍了<大数据搜索与可视化分析(8)kibana入门教程-2-Discover>,本文学习elasticsearch聚合分析,是对<大数据搜索与可视化分析(3)e ...
- Elasticsearch Scripted Metric Aggregation 自定义聚合
1.首先创建所以: PUT test_date { "settings":{ "number_of_shards":2, " ...
- ES官网reference翻译文章(19)—Scripted Metric Aggregation
对ES官网的reference的翻译,同时也是备忘,ES版本为7.5 下面是正文翻译,附上原文链接: https://www.elastic.co/guide/en/elasticsearch/ref ...
- 01.elasticsearch metric aggregation 查询
文章目录 1. 数据准备 2. metric aggregation分类 3.使用样例 1 . Avg Aggregation : 求query出来的结果的average 值 2 . Weighted ...
- Elasticsearch聚合初探——metric篇
2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch是一款提供检索以及相关度排序的开源框架,同时,也支持对存储的文档进行复杂的统计--聚合. 前言 ES ...
- tableau linux无网络安装_举个栗子!Tableau 技巧(110)两种方法实现正态分布 Normal distribution...
关于正态分布 正态分布(Normal distribution),也称"常态分布",又名高斯分布(Gaussian distribution).正态分布是统计学中一个重要的概率分布 ...
- jsp中两个字符串格式的日期可以相减吗_举个栗子!Tableau 技巧(126):学几个常用的日期函数...
当我们的数据源有日期字段时,想根据日期实现需要的分析呈现,使用函数对日期进行计算,就非常有必要了! Tableau 中的日期函数很多,今天我们分享数据粉常用的 7 个函数,看它们如何帮助实现日期的计算 ...
- 日周月筛选器_举个栗子!Tableau 技巧(147):使用 动态参数 筛选到最新日期值...
之前,我们分享过如何在筛选日期时,始终自动筛选到最新日期值的方法:筛选到最新日期值. 现在,Tableau 2020.1 版本 用户也可以使用新增的动态参数功能,实现同样的呈现效果. 那么,如何利用 ...
- tableau linux无网络安装_举个栗子!Tableau 技巧(127):购物篮分析之关联购买
购物篮分析(Market Basket Analysis)是通过顾客的购物篮信息研究其购买行为.主要目的在于找出什么样的东西应该放在一起.通过分析顾客的购买行为来探知顾客的属性及购买某些商品的可能原因 ...
最新文章
- TensorRT重磅更新!10亿参数大模型实时运行,GPT推理加速21倍
- [NodeJS] 优缺点及适用场景讨论 - 鱼松
- django_form校验
- 开发高性能的ADO.NET应用
- Redis存储优化--小对象压缩
- 1075 链表元素分类 (25 分)
- Linux与JVM的内存关系分析(转)
- qt的qmap根据key进行归类,汇总
- 武汉CMMI3认证和CMMI5认证在评估的时候需要具备哪些条件?
- postgresql 修改表字段的长度
- PDF--变清晰方法
- Report Services RDL报告服务器的一些经验
- wordpress企业主题
- 计算机专业助我成长作文600,挫折助我成长作文(精选6篇)
- Chromedriver各个版本浏览器驱动下载地址
- 数据结构:八大常见数据结构
- 微信开发者工具,调试公众号网页,控制台不显示,解决方案
- web渗透测试----28、ARP欺骗
- 变软的苹果,正在复制腾讯
- Maven——简介、下载安装与配置