kibana查询及可视化操作

一、kibana与ES交互

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana可以通过各种图表进行数据聚合分析及展示,但在数据分析方面由于ES为非关系型数据库对关联数据不好操作,文件不能跨索引关联查询只能支持单个索引的数据分析操作。目前官网上的kibana为英文版,可自行汉化版本。
https://www.elastic.co/guide/en/kibana/current/introduction.html

二、创建index

首先将ES和kibana搭建在一个服务器上,然后在kibana界面建立一个索引和ES建立的索引进行配对。在索引管理名称中添加*可匹配多个索引,一个index相当于一个数据库,我们添加的索引就是数据库中的表格。
关于索引建立的步骤如下:
1.打开kibana中的management管理
2.单击index patterns索引模块。
3.选择create index pattern模块,建立索引。
创建完成后点击索引模式中的index可查看它们的字段并修改字段类型。接下来我们就可以探索索引中的数据进行可视化绘图了

三、数据查询

点击开发工具可以在console中输入查询语句,GET 查看、post创建、delete删除、bulk方法批量插入数据。在搜索栏中可以用正则表达式来匹配我们需要的字段,或者在添加筛选模块手动添加筛选情况。常见的查询操作如下:

集群相关
查询集群健康状态
GET _cluster/health
查询所有节点
GET _cat/nodes
查询索引及分片的分布
GET _cat/shards
查询所有插件
GET _cat/plugins
索引相关查询
查询所有索引及容量
GET _cat/indices
查询索引映射结构
GET _index/_mapping
查询所有索引映射结构  
GET _all
查询所有的相同前缀索引
GET base_*/_search
查询所有索引模板
GET _template
1.查询所有数据
GET _search
{
  "query": {
    "match_all": {}
  }
}
2.查询指定字段下的数据,直接用match
GET base_prsync_log/_search
{
  "query": {
    "match": {
      "message": "sz*"      
    }
  }
}
3.当同一个属性满足逻辑或时的查询,用bool和should
GET base_prsync_log/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "message": "sh*"
          }
        },
        {
          "match": {
            "message": "sz*"
          }
        }
      ]
    }
  }
}
4.多条件查询
GET base_prsync_log/_search,用bool和must
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "sh*"
          }
        },
        {
          "match": {
            "agent.hostname": "win08-core-8-16-2"
          }
        }
      ]
    }
  }
}
5.范围查询并进行排序,用range:gte和lte指定范围,再用sort:asc和desc排序
GET base_company_event*/_search
{
  "query": {
    "range": {
      "p_stock2201_f033n": {
        "gte": 1000,
        "lte": 2300
      }
    }
  },
  "sort": [
    {
      "p_stock2201_f033n": {
        "order": "asc"
      }
    }
  ]
}
6.聚合查询
(1)固定用到size和aggs,field后面输入属性,from和to后边输入要分段的范围
GET base_company_event*/_search
{
  "size": 20,
  "aggs": {
    "p_stock2201_f033n": {
      "range": {
        "field": "p_stock2201_f033n",
        "ranges": [
          {
            "from": 1000,
            "to": 2000
          },{
            "from": 2000,
            "to": 3000
          },{
            "from": 3000,
            "to": 4000
          }
        ]
      }
    }
  }
}

四、可视化

对于需要展示的可视化数据我们首先要了解数据背景,然后决定用什么图形来呈现才能更好的表现出数据特点,安利《数据之美》这本书,它总结了关于数据呈现和思考的方式,对于我们后期的可视化选择具有一定的指导意义。

数据之美

导图

在kibana可视化界面提供了一系列的图表,包括条形图、饼图、标签云图、热力图、Markdown、Timelion等,另外在我们进行统计时只能选择一个索引模式,所以在统计过程中所需要的表格字段都要在一个索引中。在进行数据聚合分析时只支持数值类型的字段,我们的统计字段类型是number才可以在聚合下拉框中选择。
1.条形图或折线图
我们有垂直条形图可以用来显示指标的排名情况,也有水平条形图用来看分类指标的统计情况,折线图则可以用来观察趋势变化情况。
条形图

2.饼图
在饼图的设计中我们可以选择饼图和圆环图,多数情况下二维分类的圆环图用得比较多
饼图

3.指标图
对数据指标进行聚合
指标图

4.数据表
直接选择需要统计的字段,图表可导出成csv
数据表

5.热力图
热力图

6.标签云图
字体越大表示出现的次数越多
标签云图

7.Timelion
使用函数表达式构建时间序列,我们需要写Timelion表达式来呈现数据。
Timelion

常用函数如下,具体的函数意义可自己探索挖掘:

.es (.elasticsearc相同)
.static(value y轴值、label 标签)
.lines一个表达式默认展现出来会是一条线(width、fill、show boolean、step boolean、stack)
.bars展现为柱状图(width 、stack)
.points展现为一个个点(radius、weight、fill、fillColor、symbol)
.color选择颜色
.label修改标签,如.es(*).label(test)
.rangey轴取值
.yaxis对y轴的一些设置(min、max、position、label、color)
.scale_interval改变统计的间隔
.abs取绝对值
.cusum累加和
.divide .multiply .add .subtract显示的值除/乘…以某个值
.min .max最大值最小值操作
.derivative求导
.mvavg move avg 顾名思义,移动平均值(window、position)
.if (.condition相同)具体的函数意义可自己探索挖掘

以上为kibana查询及可视化的一些基础操作,目前正在学习中,如有错误请多多指教~

你可能感兴趣的:(kibana查询及可视化操作)