社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Elasticsearch

Asp.NET Core 如何使用ElasticSearch和Kibana创建仪表板

dotNET跨平台 • 2 年前 • 255 次点击  

图片


在我以前的文章(这里是第一[1]第二篇[2])中,我展示了ElasticSearch作为电子商务中的全文搜索引擎的使用,一些高级配置的设置和使用以及products包含所有内容的索引的创建保存的产品。

出于演示目的,我们使用Bogus库来动态生成产品,并使用NEST库来处理ElasticSearch索引上的CRUD。

我们的模型产品类定义为:

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 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库中用于地理数据的类。下一步是创建一个可以显示产品的仪表板,并对产品进行所进行的研究以详细介绍或减少高级统计信息。

我们决定使用Kibana[3],而不是开发耗时费力的定制解决方案。它处理作为ElasticSearch堆栈一部分的前端应用程序,使我们可以查看数据并搜索所有索引数据并跟踪查询的负载。

Kibana还可以用于监视,管理和保护同一堆栈。


图片


要安装和配置它,只需转到页面https://www.elastic.co/downloads/kibana。在这里,我们可以找到所有平台的安装程序,然后下载适合我们需求的安装程序。

一旦下载并解压缩到给定的文件夹(在我们的示例中为C:\ ElasticSearch \ Kibana)中,我们打开config / kibana.yml文件,并将elasticsearch.hosts参数设置为指向我们的ElasticSearch实例(对于本地版本http://本地主机:9200):

elasticsearch.hosts: ["http://localhost:9200"]

让我们运行bin / kibana.bat并从浏览器页面打开http:// localhost:5601。我们得到的页面如下:


图片


Kibana界面分为几个部分。

在开源版本中,包括:发现(数据交互式探索),可视化(图形,表格,标签中的数据分析),仪表板(复杂的数据视图),画布(文档创建),地图(地理参考数据分析),开发工具(处理和分析查询的工具)和管理(索引和群集管理)。

我们还可以安装X-Pack插件以使用“图形”和“监视”部分。

让我们转到管理-> Elasticsearch->索引管理部分,以验证是否已正确检测到Elasticsearch索引:


图片


我们可以找到products索引并验证其映射和与数据模型的匹配:


图片


要创建一个Kibana索引,只需转到“管理”部分->“ Kibana->索引模式”,然后输入文本,即可将新索引链接到一个或多个ElasticSearch索引。

在本例中,我们键入products,以创建我们的Kibana索引。

图片


创建索引后,可以在“发现”部分中按日期或一个或多个字段过滤数据:


图片


使用搜索栏,我们可以使用KQL语言(Kibana查询语言)在产品之间进行查询,这使您可以使用自动完成功能轻松查询。例如,我们可以输入:

category.name : Games AND rating > 0.5

了解游戏类别中所有评分高于0.5的产品。

您可以选择一些字段并将其添加到“选定的字段”中,以便获得自定义结果视图。

添加索引并验证查询的正确性后,我们可以创建新的数据视图。

可视化由各种类型的图形(条形图,蛋糕),表格,指标,指标和标签云组成。当然,它们支持数据聚合。

在“可视化”部分,我们可以使用图形来创建新的数据可视化。

图片


出于统计目的,我们使用简单的垂直条形图创建了一些按类别,品牌分组的产品图。我们得到的结果类似于:

图片


您也可以向此视图添加过滤器。例如,在我们的情况下,我们只想查看商店中可用的产品,因此我们quantity > 0在过滤器栏中键入。然后单击“保存”按钮以保存我们的视图。

另一个有用的可视化是按价格范围的产品视图。在这种情况下,我们在价格字段中定义存储桶,并将其用于饼图。让我们按以下价格范围划分产品:

0 50

50 100

100 200

200 400

400 800

800

我们可以得到类似于以下结果:


图片


我们还可以添加一些子桶以具有聚合数据和嵌套的可视化效果。

在“地图”部分中,我们可以使用“弹性地图”(多层地图)显示地理参考数据。

我们可以单击“添加”层,通过选择包含地理参考信息的字段(在我们的示例中geoIp.location)将数据添加到索引中。 


图片


创建了所需的所有视图后,我们将继续执行第一个仪表板。最后一个是一组视图,搜索和地图,通常实时更新,从而提供有关索引数据的高级信息。

在“仪表板”部分,让我们单击“创建新仪表板”,然后单击“添加”并选择创建的视图:


图片


让我们全部添加它们并将它们排列在仪表板布局上。我们可以获得这样的结果:


图片


仪表板可以通过KQL查询进行过滤,并且视图始终是动态的。我们还可以通过iframe在Web应用程序中共享和集成它们。如果点击共享->复制iframe代码,我们将获得这样的链接:

Kibana的另一个有趣功能是Canvas。它使用一种查看和呈现数据的工具来显示实时数据,并将其与颜色,图像和文本结合在一起以创建动态视图。

在“画布”部分中,让我们单击“创建工作台”,然后开始添加指标。在我们的案例中,我们为产品和可用商品,品牌和类别设置参数,为品牌-类别对设置饼图,并按品牌划分商品平均价格。


图片


创建后,工作台可以共享为JSON文件或下载为PDF报告。

其他有趣的功能是:

机器学习:允许您检查数据中的异常并使用规范化数据创建新索引;图形:使您可以查看索引对象之间的连接;日志:用于查看和管理我们应用程序的日志数据,并可能实时检查异常情况:REST API:允许您通过HTTP与Kibana引擎进行通信并管理我们的仪表板;APM:允许您实时监视服务,应用程序和相关性能;开发工具:一组用于与数据进行交互的工具,包括控制台和搜索分析器。

结论


在本文中,我们向您展示了如何使用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


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/122568
 
255 次点击