探析ElasticSearch Kibana在测试工作中的实践应用
一. 为什么使用ES Kibana
离线数据测试中最重要的就是数据验证,一部分需要测试es存储数据的正确性,另一部分就需要验证接口从es取值逻辑的正确性。而为了验证es取值逻辑的正确性,就需要用到Kibana, 它能帮助测试同学更加快速高效的执行es数据的查询,大大提高测试效率。
二. 什么是ES和Kibana
我们平常所说的ELK指的就是Elasticsearch、Logstash和Kibana,这三个技术的组合是大数据领域中一个很巧妙的设计,是一种很典型的MVC思想,模型持久层,视图层和控制层。
Logstash担任控制层的角色,负责搜集和过滤数据。
Elasticsearch担任数据持久层的角色,负责储存数据,是一个实时的分布式存储、搜索、分析的引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据,相较于Mysql来说更善于百万数据量的检索。
而我们这次讲的Kibana担任视图层角色,它是一个为Logstash和ElasticSearch提供的日志分析的Web接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作,是一个开源的数据分析与可视化平台,与Elasticsearch搜索引擎一起使用。您可以用Kibana搜索、查看、交互存放在Elasticsearch索引中的数据,也可以使用Kibana以图表、表格、地图等方式展示数据,从而达到高级的数据分析与可视化的目的。
本次将介绍Kibana中的Dev Tools中sql查询 , Visualize(可视化数据) 两个功能的使用。
三. Dev Tools 中的sql查询
ES和MYSQL的区别:
| Mysql | ElasticSearch |
|---|---|
| Database | index |
| Table | Type |
| Row | Document |
| Column | Field |
| Schema | Mapping |
| Index | Everything is indexed |
| SQL | Query DSL |
| SELECT * FROM ... | GET http://... |
| UPDATE table SET... | PUT http://... |
在数据库中的增insert、删delete、改update、查select操作等价于ES中的增PUT/POST、删Delete、改_update、查GET。对于这些复杂的查询,es使用Query DSL都可以实现。
POST /index111/_search
{
"query": {
"bool":
{
"must":
[
{"term":{"user": "张三"}},
{"term":{"timeStamp": "2022-08-04 00:00:00"}}
]
}
}
}
但是相比较来说,我们更加熟悉sql语句,所以es也提供了sql语句的开发,让我们通过sql语句即可实现ES的查询。在es版本6.3之前都不支持sql语句的开发,如果需要使用sql语句来开发es的数据查询,那么我们需要手动的自己安装插件。
但是在6.3版本之后,es自带就安装了sql的插件,集成在_xpack下面,我们可以直接通过sql语句的方式实现es当中的数据查询
以下为使用sql语句查询的步骤:
- 进入Dev Tools - Console(控制台)
POST /_xpack/sql
{
"query": "select * from index111 "
}
- 输入以上语句,默认返回格式为json

2.可以自定义返回的格式,如想返回文本格式, /_xpack/sql 后加上?format=txt

较为复杂的分类聚合计算的sql语句,也是支持的。

使用该功能,能够帮助测试同学较为方便快捷的查询es的数据,提高测试效率。
四. Visualize(可视化数据) 使用
使用上面的sql语句,能够较快的查询到数据,但该sql语句无法保存,等下次验证回归该内容,查询同样数据时,还需再次输入sql语句,就可能出现需要重新了解查询逻辑,延长回归时间的问题。而使用Visualize(可视化数据)可以将es索引内容经过聚合,通过图表等多种方式保存并显示出来,能够更加直接浏览es的数据,同时产品业务也可用于进行数据分析,创建数据看板。
以下为针对单个es索引创建可视化图表的操作步骤:
- 进入Visualize-点击创建新视图

2. 选择想要以哪种图表样式显示数据

3. 选择应用的es索引

注意,首先需要对目标索引建立索引模式,否则在创建可视化图时会无法选择到该索引。路径:Management - Create index pattern。

4. 进入图表设置界面,设置想要的数据:Metrics和Buckets, Metrics可以设置聚合
您可以使用 Elasticsearch 桶聚合 指定图表中显示哪些信息。桶聚合简单的把符合您搜索条件的文档分成不同类别,又叫做 buckets 即x轴。例如:数据的分类分析数据,通过使用桶聚合,您可以建立多个分类并看到每个分类下的数据汇总情况。
Metric有多种聚合方式:Count, Sum, Top Hit, Unique Count,可按需选择。
Buckets 可设置你的数据集中将要根据什么信息进行检索。
如想看各个人的总得分,Metric可增加一个分数,度量单位是SUM,Buckets增加人名,如果我们还想看各个人下其他维度的分数,可以再添加一个子分桶,在左侧下方点击 add sub buckets

5. 设置完成后,注意右上角需要选择应用的时间范围,默认为过去15分钟,可能就会出现无数据的情况,保存后,下次就无需使用sql查询,可以直接查看该表对应指标的数据了。

图表显示时,部分字段需要映射其他字段显示,或涉及到统计数据需要对表其中几个字段计算聚合处理,比如对其中两个字段求和,这时就可以使用到Management/Index Patterns/Script fields 脚本字段来加工原字段,将原字段映射为其他数据和增加一列计算求和的脚本字段,增加图表的易读性。例如:将姓名字段转换成其他人名映射。但如果使用script field, 需保证你的脚本的正确性,可执行性,避免因脚本问题出现的查询错误阻塞的情况。
Script field 可使用painless 语言,具有和groovy那样的语法,和 Java类似。以下为举例的字段映射脚本
def path = doc['user'].value;
String newUser;
if (path != null) {
path =path.toString();
if (path =='张三'){
newUser = '张同学';
}
if (path=='李四'){
newUser = '李同学';
}
}
return org
可以看到,Visualize桶聚合使用脚本加工字段,用户字段等就能直接映射出其他文本,方便直观。
五. 总结
以上为ES Kibana的 devtools sql查询和 Visualize 的相关介绍和使用操作步骤,Kibana还有其他的很多强大的功能,巧妙使用这些工具,能够帮助测试同学提高测试效率,帮助产品业务同学进行更高级的数据分析,希望本篇文章能够帮助大家更加了解和使用Kibana。
作者:京东物流 江雯雯
来源:京东云开发者社区 自猿其说 Tech 转载请注明来源
探析ElasticSearch Kibana在测试工作中的实践应用的更多相关文章
- 测试工作中经常用到的几个Linux命令(第一弹)
自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题(顺便迈向 ...
- 测试工作中经常用到的一丢Linux命令
自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题 1.cd ...
- 测试工作中ADB命令实战
作者:TT,<测试架构师>微信公众号作者 大家能点击进来,说明还是对ADB有所了解或听说过的,可能也会比较熟练的掌握了这些命令,下面描述如有不对的地方,欢迎指正和交流学习,请多指教! 一. ...
- Svn在工作中的实践感悟
Svn是一款管理项目代码的版本控制系统,是基于集中式的版本控制系统.在工作中,由于实际开发工作的需要,部门是使用Svn来管理日常的项目开发任务.使用这么长时间了,来谈谈对Svn的感悟. 首先,说下工作 ...
- Elasticsearch之es学习工作中遇到的坑(陆续更新)
1:es集群脑裂问题(不要用外网ip,节点角色不要混用) 原因1:阿里云服务器,外网有时候不稳定. 解决方案:单独采购服务器,内网安装 原因2:master和node节点没有分开 解决方案: 分角色: ...
- BeatifulSoup在测试工作中的应用
近期要做一个项目,重复性劳动比较多,小伙伴建议我用Jsoup,但是由于项目紧急,我直接选择了BeautifulSoup,关键原因是我Java语言不如Python掌握的熟练啊!所以,查了一圈它的中文文档 ...
- 浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
在<浏览器环境下JavaScript脚本加载与执行探析之defer与async特性>中,我们研究了延迟脚本(defer)和异步脚本(async)的执行时机.浏览器支持情况.浏览器bug以及 ...
- 浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
defer和async特性相信是很多JavaScript开发者"熟悉而又不熟悉"的两个特性,从字面上来看,二者的功能很好理解,分别是"延迟脚本"和"异 ...
- Helm3 安装 ElasticSearch & Kibana 7.x 版本
文章转载自:http://www.mydlq.club/article/13/ 系统环境: helm 版本:v3.2.1 Kubernetes 版本:1.18.3 ElasticSearch Char ...
- javaScript系列 [02]-javaScript对象探析
[02]-javaScript对象探析 题记:多年前,以非常偶然的方式关注了微信公众号“面向对象”,本以为这个公众号主要以分享面向对象编程的干货为主,不料其乃实实在在的猿圈相亲平台.通过查看公开资料, ...
随机推荐
- JSON第二
HTML DOM 节点在 HTML DOM 中,所有事物都是节点.DOM 是被视为节点树的 HTML. TML 文档中的所有内容都是节点:整个文档是一个文档节点每个 HTML 元素是元素节点HTML ...
- Request类源码分析、序列化组件介绍、序列化类的基本使用、常用字段类和参数、反序列化之校验、反序列化之保存、APIVIew+序列化类+Response写的五个接口代码、序列化高级用法之source、序列化高级用法之定制字段的两种方式、多表关联反序列化保存、反序列化字段校验其他、ModelSerializer使用
目录 一.Request类源码分析 二.序列化组件介绍 三.序列化类的基本使用 查询所有和查询单条 四.常用字段类和参数(了解) 常用字段类 字段参数(校验数据来用的) 五.反序列化之校验 六.反序列 ...
- 【python基础】循环语句-while循环
1.初识while循环 循环语句主要的作用是在多次处理具有相同逻辑的代码时使用.while循环是Python提供的循环语句之一. while循环的语法格式之一: 比如我们输出1-10之间的奇数,编写程 ...
- 掌握Python文件操作:从基础到高阶的全方位探索
在本篇博客中,我们将全面.深入地探讨Python中的文件操作.文件操作在Python编程中是不可或缺的一部分,它包含了打开.读取.写入和关闭文件等各种操作.我们将从基础的文件操作讲解到高级的文件处理技 ...
- JUC同步锁原理源码解析六----Exchanger
JUC同步锁原理源码解析六----Exchanger Exchanger Exchanger的来源 A synchronization point at which threads can pair ...
- 全面解析PCIDSS中的设备访问控制和网络访问控制
目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 1. 引言 PCI DSS是PCI设备安全标准(PCI DSS)的缩写,是由PCI设备制造商和PCI服务提供 ...
- 完美决解win10 可以上网却显示无internet的bug
试过网上的几乎所有方法,例如禁用复用网卡.网络重置.禁用复用服务,也用了用修改注册表下HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNlaSvcPa ...
- 一:wince 开发环境
1:下载相关文件,vs2008 可以自行搜索安装 链接:https://pan.baidu.com/s/1b2shwCqmc1o9x-zsy8CmeA 提取码:qing
- 【持续更新】C/C++ 踩坑记录(一)
未定义行为之 NULL dereference 下面这段代码中 is_valid() 解引用了空指针 str,我们的直觉是编译运行后将迎来 SIGSEGV,然而事情并非所期望的那样. /* * ub_ ...
- 查看UUID
查看硬盘UUID: 1. ls -l /dev/disk/by-uuid 2. blkid /dev/sda5 修改硬盘UUID: 1.新建和改变分区的UUID sudo uuidgen | xarg ...