Kibana学习笔记

Kibana 是为Elasticsearch设计的开源分析和可视化平台,利用Kibana可以很容易对Elasticsearch中的数据实现图表可视化、搜索等功能。当然熟悉Kibana的前提是对Elasticsearch有一定的了解,这是kibana的官方手册: https://www.elastic.co/guide/cn/kibana/current/index.html ,本篇文章主要是Lucene查询语法,添加索引,以及如何使用Kibana的可视化平台(图表和仪表盘)。

Kibana的安装

tar.gz 包的方式安装很简单,解压即用 https://www.elastic.co/guide/cn/kibana/current/targz.html

为了方便我选择docker安装:

1docker pull kibana:6.4.0
2
3docker run --name my_kibana \
4    -p 5601:5601 \
5    -e ELASTICSEARCH_HOSTS=http://192.168.31.86:9200 \
6    -d kibana:6.4.0

docker-compose方式:

1services:
2  kibana:
3    image: docker.elastic.co/kibana/kibana:6.4.0
4    volumes:
5      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
6	environment:
7      SERVER_NAME: kibana.example.org
8      ELASTICSEARCH_URL: http://xxx.xxx.xx.xx:9200

自定义kibana.yml或者环境变量覆盖都是没问题的,只需要将Elasticsearch的地址配置好就OK了。

另外kibana在启动后可以导入一些示例数据(在Kibana6.4.0版本里,这些示例数据是航空飞行的一些数据),可以看看通过这些demo数据构成的图表:

在 Kibana 6.7 以后系统开始支持中文了,如果需要设置为中文 vim config/kibana.yml 添加如下配置即可

1i18n.locale: "zh-CN"

Kibana的搜索

其实Kibana的搜索很简单,大部分情况下都是直接使用K=V过滤的方式来完成,首先选择左边的索引,再搜索k=v即可,比如在示例数据里我需要查询国家(DestCountry)为US,天气是下雨(OriginWeather)的数据,并且时间范围是今天内的数据:

其实这种KV的写法属于Lucene查询语法,除了KV的写法,其实还有很多Lucene表达式,为了能在Kibana中实现更多种查询,下面来看看更多的Lucene查询语法吧:

单词查询

通配符查询

? 匹配单个字符,* 匹配0或多个字符

模糊查询

~ 在一个单词后面加上~启用模糊搜索,可以搜到拼写错误的单词,比如 Cleoeland~ 匹配到 Cleveland

近似/距离查询

在短语后面加上~,可以搜到被隔开或顺序不同的单词,例如"foo bar"~4两者之间间隔4个词的距离

范围查询

DistanceKilometers:[7600 TO 7700]DistanceKilometers:{7600 TO 7700}[] 表示端点数值包含在范围内,{} 表示端点不包含在范围内

优先级查询

如果单词的匹配度很高,一个文档中或者一个字段中可以匹配多次,那么可以提升该词的相关度。使用符号^提高相关度。比如 US^2 IT

逻辑操作 & 括号分组

AND OR NOT ,分别可用 && || ! 代替,这个在上面最开始的时候已经介绍过了。

如果查询的字符里面包括了 \+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ 就需要用转义字符替代

Kibana添加索引

Management -> Kibana Index Patterns -> Index Patterns -> Create Index Pattern

Kibana添加图表

Kibana可视化控件基于 Elasticsearch 的查询。利用一系列的 Elasticsearch 查询聚合功能来提取和处理数据,再通过创建图表来呈现数据分布和趋势,点击Visualize菜单,进入可视化图表创建界面,Kibana自带有上10种图表,来创建一个直方图 —— 用于统计每天飞行距离的平均值:

先设置Y轴,值设置为飞行距离的平均值:

再设置X轴,以天为单位进行统计:

再比如对目的地做一个标签云:

Kibana仪表盘

新建仪表盘,把自己新建的图标添加进仪表盘,就可以完成丰富的仪表盘了: