场景2 小学期间排名折线图
小红是转眼到了六年级了,妈妈说不会总结的孩子不是好孩子,你做一个折线图,看看小学的成绩是一直上升呢还是下降呢?
使用postMan创建了一个xiaohong的index,数据包含年级(grade)和排名(rank),现在来看看折线图:
先来创建一个图:Home -> dashboard -> Type(Line)
如下设置之后,可以看到折线图如图所示,非一般的丑陋呀,,
我们来看一下解释:
Metric
Metric:度量,也就是Y轴,ES中也有Metric,是聚合分析,我们先对ES的聚合一把试试:
POST http://192.168.1.8:9200/xiaohong/_search
{
"aggs":{
"name_group":{
"terms":{
"field":"grade"
}
}
}
}
回显如下:可以看出聚合是将字段grade相同的聚合到一起,并且给出数量,此处统计的是count。
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 6,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "xiaohong",
"_type": "_doc",
"_id": "ETmkQ3oB_ergASVnZ7zz",
"_score": 1,
"_source": {
"grade": 1,
"ranking": 24
}
},
{
"_index": "xiaohong",
"_type": "_doc",
"_id": "EjmkQ3oB_ergASVnhLwU",
"_score": 1,
"_source": {
"grade": 2,
"ranking": 20
}
},
{
"_index": "xiaohong",
"_type": "_doc",
"_id": "EzmkQ3oB_ergASVno7z4",
"_score": 1,
"_source": {
"grade": 3,
"ranking": 10
}
},
{
"_index": "xiaohong",
"_type": "_doc",
"_id": "FDmkQ3oB_ergASVnu7xq",
"_score": 1,
"_source": {
"grade": 4,
"ranking": 5
}
},
{
"_index": "xiaohong",
"_type": "_doc",
"_id": "FTmkQ3oB_ergASVn3LwC",
"_score": 1,
"_source": {
"grade": 5,
"ranking": 9
}
},
{
"_index": "xiaohong",
"_type": "_doc",
"_id": "FjmkQ3oB_ergASVn8rwD",
"_score": 1,
"_source": {
"grade": 6,
"ranking": 1
}
}
]
},
"aggregations": {
"name_group": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 1,
"doc_count": 1
},
{
"key": 2,
"doc_count": 1
},
{
"key": 3,
"doc_count": 1
},
{
"key": 4,
"doc_count": 1
},
{
"key": 5,
"doc_count": 1
},
{
"key": 6,
"doc_count": 1
}
]
}
}
}
那么Kibana中选择average是否是聚合的同时又统计了均值呢?答案明显是是的,现在每一个年级只有一个排名,假设有一个克隆红,也有个排名,保存在小红的数据中,比如 grade 1 rank 16,那么如果是平均值,图中的年级1的值就是20了。
新增数据如下:
Metric的其它字段也很好解释了:
Field 分组的变量
Custom Label: Y轴代表的意思
Bucket
ES中也有Bucket的概念,按照一定的规则,将文档分配到不同的桶中,达到分类的目的,这个都不用在ES中尝试了,就是我们刚才尝试的terms,用于分组的。
POST http://192.168.1.8:9200/xiaohong/_search
{
"aggs":{
"name_group":{
"terms":{
"field":"grade"
}
}
}
}
遗憾的是这个案例的order by并没有啥作用,以后遇到的时候再进行补充