在单个图表上绘制多个系列
我在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"
}
]
}
可以使用称为“multifieldhistogram”的更新面板完成。 在最近安装了Kibana补丁后,我可以在Kibana3中使用它。
请参阅显示面板的链接。 https://code.csdn.net/chenryn/kibana。
这可以通过运行两个查询,一个绘制bytes_sent,一个绘制bytes_received。 将直方图设置为使用通用的“值”字段。 它看起来像你也可能需要分割你的数据,所以有唯一的记录是时间戳,bytes_sent,值和时间戳,bytes_received,值。
-Brent
我有解决这个问题的办法。 类似于@OmarOthman给出的答案,但没有上述问题,即:
由于集合在一个数组中的信息是不可能的,Elastic团队尚未解决的一个特性。
您需要将文档分解为单独的文档,每个文档包含一个值。 您可以使用弹性的父文档功能来收集它们。
分解形式:
{ "_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,否则两个系列都是相同的。 尝试绘制它,它不会按预期工作。
链接地址: http://www.djcxy.com/p/19469.html