探析ElasticSearch Kibana在测试工作中的实践应用

Kibana,工作,测试,应用 · 浏览次数 : 10

小编点评

**ES Kibana 的 DevTools sql 查询和 Visualize 功能介绍** **sql 查询** * 开发者工具 (Dev Tools) 提供了一个 SQL 查询工具,允许用户通过 SQL 语句查询和检索 Elasticsearch 数据。 * SQL 语句可以用于执行各种数据操作,包括增删改查。 *对于 es 版本 6.3 及更高版本,自带 SQL 插件,可以直接使用 SQL 语句查询数据。 **Visualize 可视化** * Visualize 是 Kibana 中另一个重要的工具,可用于将 Elasticsearch 数据可视化。 * 可视化工具可以绘制各种图表和图形,帮助用户更直观地了解数据。 * Visualize 支持多种图表样式,包括图形、柱形、散点图等。 ** DevTools sql 查询与 Visualize 的区别** | 特征 | DevTools sql 查询 | Visualize | |---|---|---| | 数据可视化 | 是 | 是 | | 数据查询 | SQL 语句 | 无 | | 可视化图表类型 | 多种 | 多种 | | 数据聚合 | 可设置 | 默认聚合 | | 可视化格式 | JSON 形式 | 多种格式 | | 数据映射 | 可设置 | 可设置 | **使用 DevTools sql 查询** 1. 打开 Kibana。 2. 点击 Management - Create index pattern 创建索引模式。 3. 在图表设置界面中设置数据。 4. 选择应用的索引。 5. 在脚本字段中设置数据聚合操作。 6. 保存并查看数据图表。 **使用 Visualize 可视化** 1. 打开 Kibana。 2. 点击 Management - Create index pattern 创建索引模式。 3. 在 Visualize-点击创建新视图 2 中选择想要以什么图表样式显示数据。 4. 选择应用的索引。 5. 注意设置的范围,默认 15 分钟。

正文

一. 为什么使用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语句查询的步骤:

  1. 进入Dev Tools - Console(控制台)
POST /_xpack/sql
{

  "query": "select * from index111 "

}



  1. 输入以上语句,默认返回格式为json

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

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

使用该功能,能够帮助测试同学较为方便快捷的查询es的数据,提高测试效率。

四. Visualize(可视化数据) 使用

使用上面的sql语句,能够较快的查询到数据,但该sql语句无法保存,等下次验证回归该内容,查询同样数据时,还需再次输入sql语句,就可能出现需要重新了解查询逻辑,延长回归时间的问题。而使用Visualize(可视化数据)可以将es索引内容经过聚合,通过图表等多种方式保存并显示出来,能够更加直接浏览es的数据,同时产品业务也可用于进行数据分析,创建数据看板。

以下为针对单个es索引创建可视化图表的操作步骤:

  1. 进入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在测试工作中的实践应用相似的内容:

探析ElasticSearch Kibana在测试工作中的实践应用

离线数据测试中最重要的就是数据验证,一部分需要测试es存储数据的正确性,另一部分就需要验证接口从es取值逻辑的正确性。而为了验证es取值逻辑的正确性,就需要用到Kibana, 它能帮助测试同学更加快速高效的执行es数据的查询,大大提高测试效率。

解密Elasticsearch:深入探究这款搜索和分析引擎

最近使用Elasticsearch实现画像系统,实现的dmp的数据中台能力。同时调研了竞品的架构选型。以及重温了redis原理等。特此做一次es的总结和回顾。网上没看到有人用Elasticsearch来完成画像的。我来做第一次尝试。

【问题排查篇】一次业务问题对 ES 的 cardinality 原理探究

小编工作中负责业务的一个服务端系统,使用了 Elasticsearch 服务做数据存储,业务运营人员反馈,用户在使用该产品时发现,用户后台统计的订单笔数和导出的订单笔数不一致!对此进行排查并进行总结

深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略

首先,我们介绍了Elasticsearch(ES)的倒排索引,这是一种用于快速检索的数据结构。其次,我们了解了ES集群的架构,包括主节点、数据节点和协调节点的功能和作用。然后,我们探讨了中文分词器的选择,其中包括IK、HanLP和Jieba等常用的分词工具。接着,我们解释了写入数据和查询数据的工作原理,包括请求的分配和预处理,数据的存储和查询结果的处理过程。最后,我们讨论了ES部署的优化方法,包括调整JVM内存、分片布局和数量、节点身份设计以及配置Ingest节点等方面的策略。

ElasticSearch深度分页详解

1 前言 ElasticSearch是一个实时的分布式搜索与分析引擎,常用于大量非结构化数据的存储和快速检索场景,具有很强的扩展性。纵使其有诸多优点,在搜索领域远超关系型数据库,但依然存在与关系型数据库同样的深度分页问题,本文就此问题做一个实践性分析探讨 2 from + size分页方式 from

进程调度的原理和算法探析

本文探讨了进程调度的原理和算法,并提供了全面的概述。进程调度是操作系统中的重要组成部分,用于决定进程的执行顺序和分配CPU时间。我们讨论了优先级调度和时间片轮转调度算法。优先级调度根据进程的优先级确定执行顺序,可以分为抢占式和非抢占式。时间片轮转调度将CPU时间划分为固定大小的时间片,每个进程在一个时间片内执行。合理设置时间片长度能够避免资源浪费和频繁的上下文切换。最短作业优先和最短剩余时间优先是

操作系统中文件系统的实现和分配方式探析(下)

本文介绍了非连续空间存放方式中的两种常见形式:链式分配和索引分配。链式分配通过链表的方式实现了文件的非连续分配,其中包括了隐式链接和显式链接两种方式。隐式链接通过遍历链表来获取下一个节点的指针,适合于文件的扩展,但查找效率较低。显式链接则将指针存储在文件分配表中,提高了检索速度,但不适用于大磁盘空间。索引分配通过为每个文件创建索引数据块,实现了文件的非连续分配和直接访问。多级索引和链式索引块是处理

架构师日记-从数据库发展历程到数据结构设计探析

本文针对数据存储相关名词概念进行了解释,重点介绍了数据库技术的发展史。为了丰富文章的可读性以及实用性,又从数据结构设计层面进行了部分技术实战能力的外延扩展,阐述了拉链表,位运算,环形队列等相关数据结构在软件开发领域的应用,希望本文给你带来收获。

操作系统中文件系统的实现和分配方式探析(上)

本文主要讨论了操作系统中文件系统的实现和分配方式。首先介绍了虚拟文件系统(VFS)作为中间层,统一了不同文件系统的接口。然后介绍了文件的物理结构,包括文件块和逻辑块之间的映射关系。接着详细讨论了连续分配方式的特点和优缺点,包括顺序访问和随机访问的效率,以及磁盘空间碎片和文件长度扩展不方便的问题。最后提到了非连续分配方式来解决连续分配方式的问题,并留下了下次讨论的悬念。文件系统的实现和分配方式对于操作系统的性能和可靠性都有重要影响,因此深入理解和研究文件系统的原理和机制是非常有价值的。

[转帖]开源软件项目中BSD、MIT许可证合规问题探析

https://www.allbrightlaw.com/CN/10475/3be2369275d19e9e.aspx [摘要]本文将探析BSD开源许可证(Berkeley Software Distribution License)和MIT开源许可证这两类“元老级”的宽松型开源许可协议(Permi