【发布时间】:2019-01-24 15:18:16
【问题描述】:
我正在尝试在 Kibana 中的一组聚合之上添加一些指标,但我不知道该怎么做。 例如,我的数据如下所示:
{{"A": 12, "B": 15, "month": "July" },
{"A": 5, "B": 98, "month": "August"},
{"A": 54, "B": 21, "month": "July" },
{"A": 53, "B": 4, "month": "August"},
{"A": 15, "B": 24, "month": "August"},
{"A": 45, "B": 33, "month": "July" },
{"A": 25, "B": 56, "month": "August"},
{"A": 8, "B": 23, "month": "August"},
{"A": 7, "B": 78, "month": "July" }}
我想画一个折线图来显示几个月的 SUM(A)/SUM(B)。所以在这个例子中 Y 轴是SUM(A)/SUM(B) per month。这是一种在聚合上应用聚合函数的方法。我知道我们可以在弹性搜索中进行聚合聚合,但是在 Kibana 可视化中呢?在当前版本的 Kibana (6.3) 中可以做到这一点吗?谢谢!
【问题讨论】:
-
这是
{"A": 12, "B": 15, "month": "July" }一份文件吗? -
@AndreiStefan 是的。假设每条记录是一个文档
-
这很重要。一方面,您有一个名为
month的字段;如您所知,Kibana 是关于时间序列的。month字段是一个字符串,而不是date。因此,在包含月份名称的字符串上创建时间序列并不会减少它。 -
我看了一点。即使
month或您在其中的任何日期字段,无论是否为date,这种聚合都可以使用bucket_scriptaggregation from Elasticsearch 完成。这在 Kibana 中尚不可用,似乎:github.com/elastic/kibana/issues/4707。 -
否则,您可以将 Timelion 与
.es(index=test,metric=sum:A,timefield=month).divide(.es(index=test,metric=sum:B,timefield=month))类似的东西一起使用。但正如我之前提到的,month必须是一个时间字段。它可以像"month":{"type":"date","format":"yyyy-MMM"}(意思是年月名)一样简单。
标签: elasticsearch kibana aggregation