一、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表达式来呈现数据。
常用函数如下,具体的函数意义可自己探索挖掘:
.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查询及可视化的一些基础操作,目前正在学习中,如有错误请多多指教~