【问题标题】:Aggregation of aggregation in Kibana visualizationKibana 可视化中的聚合聚合
【发布时间】: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_script aggregation 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


【解决方案1】:

正如 cmets 中已经指出的那样,这需要 Elasticsearch 中的 bucket_script 聚合。这目前不适用于 Kibana 中的“经典图表”(请参阅​​ kibana/#4707)。

您可以使用带有表达式的 Timelion 来解决这个问题(如上面 Andrei 所指出的),然后在编辑器(或 Timelion 应用程序)的间隔选择器中将间隔切换为 1M:

.es(index=test,metric=sum:A,timefield=month).divide(.es(index=test,metric=sum:B,timefield=month))

另一种解决方案是使用“Visual Builder”,其配置如下所示:

如果您需要每月值,您还应该在“面板选项”下选择1Minterval 大小。

【讨论】:

    猜你喜欢
    • 2020-09-15
    • 2015-12-12
    • 1970-01-01
    • 2019-08-25
    • 2020-06-12
    • 1970-01-01
    • 2020-02-12
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多