elasticsearch 使用最频繁的值计算条形图的平均值,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 使用最频繁的值计算条形图的平均值,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 使用最频繁的值计算条形图的平均值

elasticsearch 使用最频繁的值计算条形图的平均值,elasticsearch,kibana,elasticsearch,Kibana,如果我使用带箱子的条形图用Python绘制价格数据的值,我会得到以下结果: 因此,价格在0到15之间。让我们想象一下,这是一天中某个特定时间的价格分布 在Kibana中,我想创建一个折线图,用于计算每小时的平均价格。如果我使用平均桶或平均值,那么基本上平均值是根据数据计算的。然而,在我的例子中,平均值基本上是直方图中最常见的值 例如,在上面给出的图表中,平均值为1.1,因为它有800多个条目 我如何计算Kibana的这种平均值呢?让我们理清你的目标。你的目标是, 找出每小时发生最多的价格 这太高

如果我使用带箱子的条形图用Python绘制价格数据的值,我会得到以下结果:

因此,价格在0到15之间。让我们想象一下,这是一天中某个特定时间的价格分布

在Kibana中,我想创建一个折线图,用于计算每小时的平均价格。如果我使用平均桶或平均值,那么基本上平均值是根据数据计算的。然而,在我的例子中,平均值基本上是直方图中最常见的值

例如,在上面给出的图表中,平均值为1.1,因为它有800多个条目


我如何计算Kibana的这种平均值呢?

让我们理清你的目标。你的目标是,

找出每小时发生最多的价格

这太高了,无法在kibana上实现,让我们在elasticsearch上下文中更进一步

以小时间隔将x轴设置为日期时间 查找每个小时桶中发生次数最多的价格 这可以通过以下设置来实现

y轴 设置为度量聚合-平均值

x轴 使用设置为最新直方图

字段:您的时间戳 间隔时间:每小时 以下是您案例的重要部分

分裂系列 约定

字段:价格 订购人:自定义度量计数 顺序:降序 尺码:1

aggs:{ 2: { 日期直方图:{ 字段:@时间戳, 间隔时间:1h, 时区:亚洲/东京, 最小文档数:1 }, aggs:{ 3: { 条款:{ 字段:价格, 尺寸:1, 订单:{ _计数:desc } }, aggs:{ 1: { 平均值:{ 字段:价格 } } } } } } }


如果查看kibana中的查询,您会发现第二个术语聚合只是返回计数最高的文档。

我想您需要Pipeline Avg Bucket聚合。例如,如果我的平均每小时分布为3,4,5,4,5,2,那么平均桶聚合为3+4+5+4+5+2/6=3.833。你需要这个3.833,对吗?@HatimStovewala:不,我需要最频繁的值,我称这个频繁值为平均值。所以,我不想用经典的方法计算平均值,因为对于我的应用程序来说,它没有意义。在您的样本数据中,答案可能在4到5之间,例如4+5/2=4.5为什么不使用价格直方图聚合?@YuWatanabe:好的,谢谢。在这种情况下,Kibana中的参数间隔应等于0.2,以便正确反映我的示例?我应该使用平均桶吗?@YuWatanabe:我应该使用最大聚合的平均桶吗?我想既然我想得到最大条目数的仓位,我应该使用平均桶内的最大值,不是吗?Y轴不应该是平均桶->聚合最大值吗?如果你只想得到直方图桶内的最大价格。那么答案是肯定的。我只是想知道你的想法。我只想每小时得到一个数字。在X轴上我有小时。我在问题中显示的柱状图是某个特定小时的价格分布,例如15:00到16:00之间。所以,在Y轴上,我想得到每小时最频繁的价格。因此,我假设在X轴我应该按小时分组,而在Y轴我应该使用平均桶->直方图->价格,然后使用聚合最大->价格。正如我从你的回答中所理解的,这将给你我所需要的。我明白了。您只需将x轴的聚合设置为日期直方图间隔小时,并将y轴的度量聚合设置为最大。那么你将在每小时内得到最高价格。它不应该是最高价格。这应该是最常见的价格。因此,我应该为每个小时选择最频繁的bin。