7

我在 Elasticsearch 中有一个索引,其中包含一组简单对象(键值,请参见下面的示例)。

文档有时间戳。

我可以在 Kibana 中为每个键值创建单独的直方图(即一个用于 bytes_sent 的图表和另一个用于 bytes_received 的图表)。

我想知道是否有办法在一个直方图上显示这两个系列。

谢谢

亚西尔

"_index": "myindex",
    "_type": "showstatus",
    "_id": "JhyLAGbcRDyXmrIMmP5lLg",
    "_score": 1,
    "_source": {
       "_datetime" : "2014-03-21 10:10:10",
       "showstatus": [
          {
             "value": 96451,
             "variable_name": "bytes_sent"
          },
          {
             "value": 435322,
             "variable_name": "bytes_received"
          }
       ]
    }
4

4 回答 4

3

它可以使用一个名为“multifieldhistogram”的新面板来完成。最近安装了 Kibana 补丁后,我可以在 Kibana3 中使用它。

请参阅显示面板的此链接。https://code.csdn.net/chenryn/kibana

于 2015-04-29T18:34:30.897 回答
1

这可以通过运行两个查询来实现,一个用于绘制 bytes_sent,一个用于绘制 bytes_received。设置直方图以使用常见的“值”字段。看起来您可能还需要拆分数据,以便有唯一的记录,即时间戳、字节发送、值和时间戳、字节接收、值。

-布伦特

于 2014-04-04T20:15:10.007 回答
1

我有这个问题的解决方案。类似于@OmarOthman 给出的答案,但没有上述问题,即:

  1. 将信息聚合到数组中是不可能的,这是 Elastic 团队尚未解决的一个功能

  2. 您需要将文档分解为单独的文档,每个文档都有一个数组的值。您可以使用弹性的父文档功能来收集它们。

  3. 获得具有此形状的文档后:

分解形式:

{ "_datetime" : "2014-03-21 10:10:10", "bytes_sent": 12312, "bytes_received" : 123123 }  
{ "_datetime" : "2014-03-21 10:10:11", "bytes_sent": 12310, "bytes_received" : 12313 }

代替:

[…]
"_datetime" : "2014-03-21 10:10:10",
"showstatus": [
{
"value": 96451,
"variable_name": "bytes_sent"
},
{
"value": 435322,
"variable_name": "bytes_received"
}
]
}
[…]

您可以像@OmarOthman所说的那样在 Timelion 中绘制多个系列,但您也可以使用Timelion的 yaxis方法添加第二个(甚至第三个)Y 轴,例如:

.es('avg:bytes_sent').yaxis(1, label='Bytes sent').bars(), .es('avg:bytes_received').yaxis(2, label='Bytes received', positon='right').bars()

使用方法,您可以将其绘制为日期直方图。

@ OmarOthman 提出的另一种方法将仅显示平均“值”,从 showstatus 数组的所有文档中获取所有“值”数据。这样做是因为查询“showstatus.variable_name:bytes_sent”始终为真,因为所有文档在其数组 showstatus 中都有该“变量名”。因此,除非某些文档在数组 showstatus 中没有 bytes_sent variable_name,否则这两个系列都是相同的。尝试绘制它,它没有按预期工作。

于 2017-05-08T23:21:04.993 回答
-2

要分享有关较新 Kibana 版本的知识,使用 Kibana 的 TimeLion 工具很容易。当您被要求创建可视化时,选择“时间序列”。

新的可视化

对我来说,按照开头弹出的几个对话框来了解如何开始就足够了。这样的事情应该开始:

.es('showstatus.variable_name:bytes_sent'), .es('showstatus.variable_name:bytes_received')
于 2017-03-13T13:29:10.737 回答