准备加载一些数据并构建仪表盘?本教程将向你展现如何:html
本教程须要三个数据集:web
其中两个数据集是压缩的,要提取文件,请使用如下命令:shell
unzip accounts.zip gunzip logs.jsonl.gz
Shakespeare数据集具备如下结构:json
{ "line_id": INT, "play_name": "String", "speech_number": INT, "line_number": "String", "speaker": "String", "text_entry": "String", }
accounts数据集的结构以下:segmentfault
{ "account_number": INT, "balance": INT, "firstname": "String", "lastname": "String", "age": INT, "gender": "M or F", "address": "String", "employer": "String", "email": "String", "city": "String", "state": "String" }
logs数据集有许多不一样的字段,如下是本教程的重要字段:安全
{ "memory": INT, "geo.coordinates": "geo_point" "@timestamp": "date" }
在加载Shakespeare和logs数据集以前,必须为字段设置映射,映射将索引中的文档划分为逻辑组,并指定字段的特征,这些特征包括字段的可搜索性以及它是否被标记化,或者分解为单独的单词。markdown
若是启用了安全性,则必须具备运行本教程的全部Kibana权限,你还必须具备建立,管理读取,写入和删除索引权限,有关详细信息,请参阅 安全权限。
在Kibana Dev Tools > Console,为Shakespeare数据集设置映射:app
PUT /shakespeare { "mappings": { "doc": { "properties": { "speaker": {"type": "keyword"}, "play_name": {"type": "keyword"}, "line_id": {"type": "integer"}, "speech_number": {"type": "integer"} } } } }
此映射指定数据集的字段特征:curl
speaker
和play_name
字段是关键字字段,这些字段不被分析,即便字符串包含多个单词,它们也会被视为一个单元。line_id
和speech_number
字段是整数。logs数据集须要映射以经过应用geo_point
类型将纬度和经度对标记为地理位置。elasticsearch
PUT /logstash-2015.05.18 { "mappings": { "log": { "properties": { "geo": { "properties": { "coordinates": { "type": "geo_point" } } } } } } }
PUT /logstash-2015.05.19 { "mappings": { "log": { "properties": { "geo": { "properties": { "coordinates": { "type": "geo_point" } } } } } } }
PUT /logstash-2015.05.20 { "mappings": { "log": { "properties": { "geo": { "properties": { "coordinates": { "type": "geo_point" } } } } } } }
accounts数据集不须要任何映射。
此时,你已准备好使用Elasticsearch bulk API来加载数据集:
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
或者对于Windows用户,在Powershell中:
Invoke-RestMethod "http://localhost:9200/bank/account/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "accounts.json" Invoke-RestMethod "http://localhost:9200/shakespeare/doc/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "shakespeare_6.0.json" Invoke-RestMethod "http://localhost:9200/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "logs.jsonl"
这些命令可能须要一些时间才能执行,具体取决于可用的计算资源。
验证加载成功:
GET /_cat/indices?v
你的输出应该相似于:
health status index pri rep docs.count docs.deleted store.size pri.store.size yellow open bank 5 1 1000 0 418.2kb 418.2kb yellow open shakespeare 5 1 111396 0 17.6mb 17.6mb yellow open logstash-2015.05.18 5 1 4631 0 15.6mb 15.6mb yellow open logstash-2015.05.19 5 1 4624 0 15.7mb 15.7mb yellow open logstash-2015.05.20 5 1 4750 0 16.4mb 16.4mb
索引模式告诉Kibana你想要探索哪些Elasticsearch索引,索引模式能够匹配单个索引的名称,或者包含通配符(*
)以匹配多个索引。
例如,Logstash一般以logstash-YYYY.MMM.DD
格式建立一系列索引,要浏览2018年5月的全部日志数据,你能够指定索引模式logstash-2018.05*
。
你将为Shakespeare数据集建立模式,该数据集具备名为shakespeare
的索引,和accounts数据集,其具备名为bank
的索引,这些数据集不包含时间序列数据。
shakes*
。ba*
的索引模式,你不须要为此模式配置任何设置。如今为Logstash数据集建立一个索引模式,这个数据集包含时间序列数据。
logstash*
的索引模式。定义索引模式时,与该模式匹配的索引必须存在于Elasticsearch中,而且它们必须包含数据,要检查哪些索引可用,请转到 Dev Tools > Console并输入GET _cat/indices
,或者,使用curl -XGET "http://localhost:9200/_cat/indices"
。
使用Discover应用程序,你能够输入Elasticsearch查询来搜索数据并过滤结果。
shakes*
,你可能须要在菜单栏中单击New以刷新数据。ba*
。account_number:<100 AND balance:>47500
的搜索返回0到99之间的全部账号,余额超过47,500,它返回账号8,32,78,85和97的结果。
默认状况下,会为每一个匹配的文档显示全部字段,要选择要显示的字段,请将指针悬停在Available Fields列表上,而后单击要在表中包含的每一个字段旁边的add。
例如,若是添加account_number
字段,则显示将更改成包含五个帐户数的列表。
在Visualize应用程序中,你可使用各类图表、表格和地图等来塑造数据,你将建立四个可视化效果:饼图、柱状图、坐标图和Markdown小部件。
ba*
索引模式,你将使用饼图了解银行帐户数据中的帐户余额。实际上,饼图只包含一个“切片”,这是由于默认搜索匹配全部文档。
要指定要在饼图中显示哪些切片,可使用Elasticsearch的bucket聚合,此聚合将匹配搜索条件的文档排序为不一样的类别,也称为bucket。
使用bucket聚合来创建多个账户余额范围,并找出每一个范围中有多少账户。
定义如下范围:
0 999 1000 2999 3000 6999 7000 14999 15000 30999 31000 50000
如今你能够看到1000个帐户落入每一个余额范围的比例是多少。
添加另外一个关注账户持有人年龄的bucket聚合。
如今,你能够看到账户持有人的年龄细分,显示在余额范围的环形上。
保存此图表以便之后使用:
Pie Example
。你将使用柱状图查看Shakespeare的数据集,并比较play中speaking部分的数量。
shake*
。最初图表是一个显示匹配默认通配符查询的文档总数的单一栏。
在y轴上显示每一个play的speaking部分的数量,这须要你配置y轴指标聚合,这个聚合根据搜索结果的值计算指标。
沿着x轴显示paly。
Play Name
。鼠标悬停在一个柱子上,会显示一个工具提示,其中包含该play的speaking部分的数量。
注意单独的play名字是如何以完整的短语出现的,而不是被分解成单独的单词,这是你在本教程开始时所作的映射的结果,当时你将play_name
字段标记为不分析。
使用名称Bar Example
保存此图表。
使用坐标图,你能够在日志文件示例数据中可视化地理信息。
logstash*
。你尚未定义任何桶,因此可视化是世界地图。
如今,从日志文件映射地理坐标。
如今地图看起来像这样:
你能够经过点击并拖动来导航地图,地图左上角的控件使你可以缩放地图并设置过滤器,试一下。
使用名称Map Example
保存此地图。
最后的可视化是一个呈现格式化文本的Markdown小工具。
在文本框中输入如下内容:
# This is a tutorial dashboard! The Markdown widget uses **markdown** syntax. > Blockquotes in Markdown use the > character.
在预览窗格中呈现Markdown:
用名称Markdown Example
保存这个可视化。
仪表盘是你能够排列和共享的可视化集合,你将构建一个仪表盘,其中包含在本教程中保存的可视化内容。
你的示例仪表盘看起来像这样:
你能够经过点击可视化的标题并拖动来从新排列可视化,在可视化的右上角的齿轮图标显示编辑和删除可视化的控件,一个调整大小的控件在右下角。
要得到要共享的连接或将仪表盘嵌入web页面的HTML代码,请保存仪表盘并单击Share。
保存你的仪表盘。
数据的可视化效果很是好,可是有时候你须要查看实际数据来了解真正发生了什么,你能够检查任何可视化后的数据,并查看用于检索它的Elasticsearch查询。
你还能够查看用于获取可视化数据的查询。
既然你已经掌握了基础知识,那么你就能够开始使用Kibana探索你本身的数据了。