kibana查询及可视化操作

作者: estate47 | 来源:发表于2020-04-10 11:43 被阅读0次

    一、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查询及可视化操作

        本文链接:https://www.haomeiwen.com/subject/qzdlmhtx.html