截止目前为止 Kibana 已经提供了丰富的可视化工具让我们对数据进行可视化。从 Kibana 的发展史中可以看出来 Kibana 在可视化路径中的演化:

特别是最近推出的 Lens。它把创建可视化的门槛降到了极低的一个程度。它使很多不懂得 Kibana 操作的人也可以顺利地创建自己喜欢的可视化:

如果你想对 Kibana 的可视化有更多的了解,请参阅我的 “Kibana 专栏”。如果你是 Kibana 的初学者,那么请阅读我之前的系列文章:

  • Kibana:Kibana 入门 (一)

  • Kibana:Kibana 入门 (二)

  • Kibana:Kibana 入门 (三)

里面有详细的步骤介绍如何运用 Lens 来创建令人激动的可视化图。

对于一些高级的开发者来说,现有的可视化工具在某些情况下可能无法满足你的要求。特别地,我们知道 Kibana 针对 join 或者 nested 数据类型非常不友好。我们甚至没有好的开箱即用的可视化工具来针对这些数据进行可视化。在今天的文章中,我将介绍如何使用 Vega 来针对这样的数据进行可视化。

如果你对 Vega 还是不甚了解的话,那么请阅读我之前的文章 “Kibana:Vega 可视化入门 - 定制自己的可视化图”。它详细地介绍了如何从零基础来创建一个 Vega 的可视化图。更重要的是,通过 Vega 制作的定制可视化图,也也可以变成 Dashboard 的一部分。

在今天的展示中,我将使用最新的 Elastic Stack 8.0 来进行展示。

我们首先来创建一个如下的含有 nested 数据类型的索引:

PUT products
{"mappings": {"properties": {"resellers": {"type": "nested","properties": {"reseller": {"type": "text"},"price": {"type": "double"},"rtype": {"type": "keyword"}}}}}
}

如果大家对 nested 数据类型不是很熟的话,请参阅之前的文章 “Elasticsearch: nested 对象”。

接下来,我们创建如下的两个文档:

PUT products/_doc/0
{"name": "LED TV","resellers": [{"reseller": "companyA","price": 350,"rtype": "X"},{"reseller": "companyB","price": 600,"rtype": "Y"},{"reseller": "companyC","price": "250","rtype": "Z"},{"reseller": "companyD","price": 500,"rtype": "Y"}]
}PUT products/_doc/1
{"name": "LCD TV","resellers": [{"reseller": "companyE","price": 150,"rtype": "X"},{"reseller": "companyF","price": 500,"rtype": "Y"},{"reseller": "companyG","price": 550,"rtype": "X"},{"reseller": "companyH","price": 300,"rtype": "X"}]
}

现在我们的问题是想针对  rtype 进行统计。我们想知道各个 rtype 的平均价钱是多少。我们使用如下的命令来进行统计:

GET products/_search
{"size": 0,"aggs": {"resellers": {"nested": {"path": "resellers"},"aggs": {"_termaggs": {"terms": {"field": "resellers.rtype","size": 10},"aggs": {"_avgaggs": {"avg": {"field": "resellers.price"}}}}}}}
}

上面命令运行的结果是:

在上面的左边,我们可以看到查询的 body 的定义。在右边,它清楚地显示了查询结果所在的路径。我们可以看到各个 rtype 的数量及其平均价格。那么我们该如何通过 Vega 的形式来针对这个结果进行可视化呢?由于目前 Kibana 并不支持针对 nested 数据类型的可视化,我们需要使用 Vega 来对它进行可视化:

我们在右边的窗口粘贴如下的代码:

{$schema: "https://vega.github.io/schema/vega-lite/v5.json"title: "Reseller Type vs Average Prices"data: {url: {index: "products"body: {"size": 0,"aggs": {"resellers": {"nested": {"path": "resellers"},"aggs": {"_termaggs": {"terms": {"field": "resellers.rtype","size": 10},"aggs": {"_avgaggs": {"avg": {"field": "resellers.price"}}}}}}}}}format: { property: "aggregations.resellers._termaggs.buckets" }}mark: barencoding: {x: {bin: falsefield: "key"type: "nominal"axis: {title: "Reseller Type", labelAngle:0 }}y: {field: "_avgaggs.value"type: quantitativeaxis: {title: "Average Prices"}}}
}

理解上面的代码应该不是很难。在 body 的部分,我们填入了查询的 body。我们在 format 中定义了获取查询结果的路径。在下面的部分,我们使用 bar 来进行可视化展示。在 encoding 部分针对 x 及 y 轴进行了配置。点击上面的 Update 按钮:

我们在左边看到了这个数据的可视化结果。我们点击 Save 按钮:

在上面,我们创建一个崭新的 Dashboard 以保持当前的可视化:

如上所示,我们已经成功地把创建的定制可视化嵌入到一个 Dashboard 中。

在实际的使用中,我们可以根据自己的需求充分运用 Vega 带给我们的强大的可视化能力来定制我们任何所需要的可视化。

Kibana:构建自定义 kibana 可视化,推动更深入的洞察相关推荐

  1. tableau可视化_如何在Tableau中构建自定义地图可视化

    tableau可视化 Sometime last year, I got fascinated with bubble charts when I saw a data visualization v ...

  2. 在ASP.NET Core中创建自定义端点可视化图

    在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...

  3. sklearn基于make_scorer函数为Logistic模型构建自定义损失函数并可视化误差图(lambda selection)和系数图(trace plot)+代码实战

    sklearn基于make_scorer函数为Logistic模型构建自定义损失函数并可视化误差图(lambda selection)和系数图(trace plot)+代码实战 # 自定义损失函数 i ...

  4. 【Elasticsearch】es Timelion是Kibana中时间序列的可视化工具

    1.概述 翻译:Timelion教程–从零到英雄 Timelion是Kibana中时间序列的可视化工具.时间序列可视化是按时间顺序分析数据的可视化.Timelion可用于绘制二维图,时间绘制在x轴上. ...

  5. 数字孪生政务丨构建大数据可视化展现平台,提高行政服务效能

    "全面推进政府履职和政务运行数字化转型,统筹推进各行业各领域政务应用系统集约建设.互联互通.协同联动,创新行政管理和服务方式,全面提升政府履职效能."--<国务院关于加强数字 ...

  6. Springboot构建Echarts数据可视化

    Spring boot集成了tomcat等容器,效率更高,要实现数据的可视化,需要构建spring Boot框架架构web项目.同时使用注意的方式,就可以轻松建立前端访问路径与后端controller ...

  7. 构建自定义安全令牌服务

    [转:http://msdn.microsoft.com/zh-cn/magazine/dd347547.aspx] 本文基于 "Geneva" 框架的预发布版本撰写而成.所有信息 ...

  8. Kibana:在 Kibana 中使用 Maps 和 Timelion 分析地震数据

    在之前的文章 "使用 Kibana Timelion 进行时间序列分析",我已经介绍了 Kibana 中的 Timelion 可视化工具.在今天的文章中,我将使用 Timelion ...

  9. tdd 私有方法_使用TDD方法构建自定义的Twig过滤器

    tdd 私有方法 Twig is a powerful, yet easy to master template engine. It is also my personal favorite as ...

最新文章

  1. L1-044 稳赢 (暴力法)
  2. 高程 第6章面向对象的程序设计 6.1 理解对象
  3. 【Python基础】Python高级特性:切片、迭代、列表生成式、生成器与迭代器
  4. brew安装_苹果mac系统必须安装python3
  5. Struts2配置文件详解
  6. phpexcel 日期 时分秒_thinkPHP+PHPExcel实现读取文件日期的方法含时分秒
  7. 计算机系统遵循,自考《计算机系统结构》第10章精讲
  8. 一个C++工程内存泄漏问题的排查及重现工程
  9. SOLO参赛,赛道二周冠军“达尔文”分享上分秘诀
  10. Quick-cocos2d-x3.3 Study (五)--------- 添加按钮
  11. 浅析Ruby on Rails部署方案(三)
  12. Oracle 存储过程、存储函数 与原生 JDBC 调用
  13. loadrunner11 下载路径+安装+破解+汉化
  14. [渝粤教育] 西安交通大学 土力学 参考 资料
  15. 算法设计实验一单峰序列
  16. Springboot实现remember-me记住我功能
  17. iOS-图片可以自适应屏幕大小吗,应该会失真吧?
  18. mysql2008连接不上_sql server连接不上怎么办 SQL Server2008R无法登录的解决方案(1814\18456)...
  19. Eclipse+Java+Swing实现宠物商店管理系统
  20. Pytorch系列之——nn网络层

热门文章

  1. 脉冲神经网络 计算机科学,基于卷积计算的多层脉冲神经网络的监督学习 - 计算机工程与科学.PDF...
  2. 【HCIA】虚拟化技术介绍
  3. 3155: Preprefix sum
  4. 微软的远程界面RD client怎么用???
  5. C语言编程开发中用好位操作符
  6. 互联网金融支付体系变革趋势
  7. 安装flask后vim出现:error detected while processing /home/zww/.vim/ftplugin/python/pyflakes.vim:line 28
  8. python 公众号文章发布_Python 抓取微信公众号文章
  9. 《张成功项目管理记》一盯着,不停地盯着
  10. 浪潮天梭服务器装系统步骤,浪潮天梭TS10000高性能主机系统配置方案.DOC