Asp.NET Core 如何使用ElasticSearch和Kibana创建仪表板
圖片
在我以前的文章(這里是第一[1]篇和第二篇[2])中,我展示了ElasticSearch作為電子商務(wù)中的全文搜索引擎的使用,一些高級配置的設(shè)置和使用以及products包含所有內(nèi)容的索引的創(chuàng)建保存的產(chǎn)品。
出于演示目的,我們使用Bogus庫來動態(tài)生成產(chǎn)品,并使用NEST庫來處理ElasticSearch索引上的CRUD。
我們的模型產(chǎn)品類定義為:
public class Product {public int Id { get; set; }public string Ean { get; set; }public string Name { get; set; }public string Description { get; set; }public Brand Brand { get; set; }public Category Category { get; set; }public Store Store { get; set; }public decimal Price { get; set; }public string Currency { get; set; }public int Quantity { get; set; }public float Rating { get; set; }public DateTime ReleaseDate { get; set; }public string Image { get; set; }public List<review> Reviews { get; set; } }其中品牌,類別,商店,評論和用戶類別分別是:
public class Brand {public int Id { get; set; }public string Name { get; set; }public string Description { get; set; } }public class Category {public int Id { get; set; }public string Name { get; set; }public string Description { get; set; } }public class Store {public int Id { get; set; }public string Name { get; set; }public string Description { get; set; } }public class Review {public int Id { get; set; }public short Rating { get; set; }public string Description { get; set; }public User User { get; set; } }public class User {public int Id { get; set; }public string FirstName { get; set; }public string LastName { get; set; }public string IPAddress { get; set; }public GeoIp GeoIp { get; set; } }GeoIP是NEST庫中用于地理數(shù)據(jù)的類。下一步是創(chuàng)建一個可以顯示產(chǎn)品的儀表板,并對產(chǎn)品進行所進行的研究以詳細(xì)介紹或減少高級統(tǒng)計信息。
我們決定使用Kibana[3],而不是開發(fā)耗時費力的定制解決方案。它處理作為ElasticSearch堆棧一部分的前端應(yīng)用程序,使我們可以查看數(shù)據(jù)并搜索所有索引數(shù)據(jù)并跟蹤查詢的負(fù)載。
Kibana還可以用于監(jiān)視,管理和保護同一堆棧。
圖片要安裝和配置它,只需轉(zhuǎn)到頁面https://www.elastic.co/downloads/kibana。在這里,我們可以找到所有平臺的安裝程序,然后下載適合我們需求的安裝程序。
一旦下載并解壓縮到給定的文件夾(在我們的示例中為C:\ ElasticSearch \ Kibana)中,我們打開config / kibana.yml文件,并將elasticsearch.hosts參數(shù)設(shè)置為指向我們的ElasticSearch實例(對于本地版本http://本地主機:9200):
elasticsearch.hosts: ["http://localhost:9200"]
讓我們運行bin / kibana.bat并從瀏覽器頁面打開http:// localhost:5601。我們得到的頁面如下:
圖片Kibana界面分為幾個部分。
在開源版本中,包括:發(fā)現(xiàn)(數(shù)據(jù)交互式探索),可視化(圖形,表格,標(biāo)簽中的數(shù)據(jù)分析),儀表板(復(fù)雜的數(shù)據(jù)視圖),畫布(文檔創(chuàng)建),地圖(地理參考數(shù)據(jù)分析),開發(fā)工具(處理和分析查詢的工具)和管理(索引和群集管理)。
我們還可以安裝X-Pack插件以使用“圖形”和“監(jiān)視”部分。
讓我們轉(zhuǎn)到管理-> Elasticsearch->索引管理部分,以驗證是否已正確檢測到Elasticsearch索引:
圖片我們可以找到products索引并驗證其映射和與數(shù)據(jù)模型的匹配:
圖片要創(chuàng)建一個Kibana索引,只需轉(zhuǎn)到“管理”部分->“ Kibana->索引模式”,然后輸入文本,即可將新索引鏈接到一個或多個ElasticSearch索引。
在本例中,我們鍵入products,以創(chuàng)建我們的Kibana索引。
圖片創(chuàng)建索引后,可以在“發(fā)現(xiàn)”部分中按日期或一個或多個字段過濾數(shù)據(jù):
圖片使用搜索欄,我們可以使用KQL語言(Kibana查詢語言)在產(chǎn)品之間進行查詢,這使您可以使用自動完成功能輕松查詢。例如,我們可以輸入:
category.name : Games AND rating > 0.5
了解游戲類別中所有評分高于0.5的產(chǎn)品。
您可以選擇一些字段并將其添加到“選定的字段”中,以便獲得自定義結(jié)果視圖。
添加索引并驗證查詢的正確性后,我們可以創(chuàng)建新的數(shù)據(jù)視圖。
可視化由各種類型的圖形(條形圖,蛋糕),表格,指標(biāo),指標(biāo)和標(biāo)簽云組成。當(dāng)然,它們支持?jǐn)?shù)據(jù)聚合。
在“可視化”部分,我們可以使用圖形來創(chuàng)建新的數(shù)據(jù)可視化。
圖片出于統(tǒng)計目的,我們使用簡單的垂直條形圖創(chuàng)建了一些按類別,品牌分組的產(chǎn)品圖。我們得到的結(jié)果類似于:
圖片您也可以向此視圖添加過濾器。例如,在我們的情況下,我們只想查看商店中可用的產(chǎn)品,因此我們quantity > 0在過濾器欄中鍵入。然后單擊“保存”按鈕以保存我們的視圖。
另一個有用的可視化是按價格范圍的產(chǎn)品視圖。在這種情況下,我們在價格字段中定義存儲桶,并將其用于餅圖。讓我們按以下價格范圍劃分產(chǎn)品:
0 50
50 100
100 200
200 400
400 800
800
我們可以得到類似于以下結(jié)果:
圖片我們還可以添加一些子桶以具有聚合數(shù)據(jù)和嵌套的可視化效果。
在“地圖”部分中,我們可以使用“彈性地圖”(多層地圖)顯示地理參考數(shù)據(jù)。
我們可以單擊“添加”層,通過選擇包含地理參考信息的字段(在我們的示例中g(shù)eoIp.location)將數(shù)據(jù)添加到索引中。?
圖片創(chuàng)建了所需的所有視圖后,我們將繼續(xù)執(zhí)行第一個儀表板。最后一個是一組視圖,搜索和地圖,通常實時更新,從而提供有關(guān)索引數(shù)據(jù)的高級信息。
在“儀表板”部分,讓我們單擊“創(chuàng)建新儀表板”,然后單擊“添加”并選擇創(chuàng)建的視圖:
圖片讓我們?nèi)刻砑铀鼈儾⑺鼈兣帕性趦x表板布局上。我們可以獲得這樣的結(jié)果:
圖片儀表板可以通過KQL查詢進行過濾,并且視圖始終是動態(tài)的。我們還可以通過iframe在Web應(yīng)用程序中共享和集成它們。如果點擊共享->復(fù)制iframe代碼,我們將獲得這樣的鏈接:
<iframe src="http://localhost:5601/app/kibana#/dashboard?embed=true" height="600" width="800"></iframe>
Kibana的另一個有趣功能是Canvas。它使用一種查看和呈現(xiàn)數(shù)據(jù)的工具來顯示實時數(shù)據(jù),并將其與顏色,圖像和文本結(jié)合在一起以創(chuàng)建動態(tài)視圖。
在“畫布”部分中,讓我們單擊“創(chuàng)建工作臺”,然后開始添加指標(biāo)。在我們的案例中,我們?yōu)楫a(chǎn)品和可用商品,品牌和類別設(shè)置參數(shù),為品牌-類別對設(shè)置餅圖,并按品牌劃分商品平均價格。
圖片創(chuàng)建后,工作臺可以共享為JSON文件或下載為PDF報告。
其他有趣的功能是:
?機器學(xué)習(xí):允許您檢查數(shù)據(jù)中的異常并使用規(guī)范化數(shù)據(jù)創(chuàng)建新索引;?圖形:使您可以查看索引對象之間的連接;?日志:用于查看和管理我們應(yīng)用程序的日志數(shù)據(jù),并可能實時檢查異常情況:?REST API:允許您通過HTTP與Kibana引擎進行通信并管理我們的儀表板;?APM:允許您實時監(jiān)視服務(wù),應(yīng)用程序和相關(guān)性能;?開發(fā)工具:一組用于與數(shù)據(jù)進行交互的工具,包括控制臺和搜索分析器。
結(jié)論
在本文中,我們向您展示了如何使用Kibana來處理,管理和從ElasticSearch引擎中獲得最佳收益。
希望我們引起您對該主題的興趣。
此處提供了帶有本文中使用的代碼的示例項目:https[4]?:?//github.com/enricobencivenga/ProductElasticSearchAdvanced[5]。
References
[1]?第一:?https://www.blexin.com/en-US/Article/Blog/How-to-integrate-ElasticSearch-in-ASPNET-Core-70
[2]?第二篇:?https://www.blexin.com/en-US/Article/Blog/ElasticSearch-advanced-features-80
[3]?Kibana:?https://www.elastic.co/kibana
[4]?https:?https://github.com/enricobencivenga/ProductElasticSearchAdvanced
[5]?//github.com/enricobencivenga/ProductElasticSearchAdvanced:?https://github.com/enricobencivenga/ProductElasticSearchAdvanced
總結(jié)
以上是生活随笔為你收集整理的Asp.NET Core 如何使用ElasticSearch和Kibana创建仪表板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何验证某个 string 是否为合法的
- 下一篇: asp.net ajax控件工具集 Au