準備加載一些數據並構建儀表盤?本教程將向你展現如何: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探索你本身的數據了。