gpt4 book ai didi

elasticsearch - Elasticsearch/Kibana 中两个聚合列的计算列?

转载 作者:行者123 更新时间:2023-11-29 02:55:39 26 4
gpt4 key购买 nike

假设我有一个简单的聚合,如下所示:

| Item | Views | Clicks |
+------+-------+--------+
| B | 123 | 34 |
| A | 234 | 12 |
| C | 56 | 2 |

是否可以生成一个额外的列作为 Views 和 Clicks 列的计算结果?例如:

| Item | Views | Clicks | Ratio |
+------+-------+--------+-------+
| B | 123 | 34 | 0.28 |
| A | 234 | 12 | 0.05 |
| C | 56 | 2 | 0.03 |

如果能够在此附加列上进行排序也是理想的选择。

有没有办法通过Elasticsearch(和Kibana)实现这种聚合?

最佳答案

您可以为此使用带有脚本支持的管道聚合。缺点是您必须启用内联脚本或将脚本放在文件中。要启用对内联脚本的支持,请将其添加到您的 yaml 中。

script.inline: on

下面是一个例子:

POST /items/item/_bulk
{ "index": { "_id": "1" }}
{"name": "A","views": 2,"clicks": 3}
{ "index": { "_id": "2" }}
{"name": "A","views": 1,"clicks": 9}
{ "index": { "_id": "3" }}
{"name": "B","views": 5,"clicks": 15}
{ "index": { "_id": "4" }}
{"name": "C","views": 1,"clicks": 1}
{ "index": { "_id": "5" }}
{"name": "A","views": 3,"clicks": 23}

GET /items/item/_search
{
"size": 0,
"aggs": {
"byName": {
"terms": {
"field": "name",
"size": 10
},
"aggs": {
"countClicks": {
"sum": {
"field": "clicks"
}
},
"countViews": {
"sum": {
"field": "views"
}
},
"computeRatio": {
"bucket_script": {
"buckets_path": {
"the_clicks": "countClicks",
"the_views": "countViews"
},
"script": "the_clicks / the_views"
}
}
}
}
}
}

关于elasticsearch - Elasticsearch/Kibana 中两个聚合列的计算列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36590677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com