使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据

想要轻松地通过许多不同的方式查询数据,甚至是从未预料到的方式?想要以多种方式可视化日志?同时支持基于时间、文本和其他类型的即时过滤器?

借助于 Elastic stack 的卓越性能和可扩展方式的优点,我们将通过两个示例轻松实现。

本文由 DNC Magazine for Developers and Architects 发布。 从这里下载此杂志[PDF] 或 免费订阅本杂志 下载所有以前和当前的版本版本。

在这篇文章中,我将介绍流行的搜索引擎 Elasticsearch,其配套的可视化应用 Kibana,并展示如何对.NET核心可以轻松地与 Elastic stack 整合在一块。


Elasticsearch和.Net Core


我们将开始探索 Elasticsearch 的 REST API ,通过索引和查询某些数据。接着,我们将使用Elasticsearch官方的 .Net API 完成类似的练习。一旦熟悉 Elasticsearch 及其 API 后,我们将使用 .Net Core 创建一个日志模块,并将数据发送到 Elasticsearch 。Kibana紧随其中,以有趣的方式可视化 Elasticsearch 的索引数据。
我迫切希望你会认为这篇文章十分有趣,并且想要了解更多关于Elastic的强大之处。

本文假设您已经了解 C#和 REST API 的基本知识。使用 Visual Studio,Postman 和 Docker 等工具,但您可以轻松使用 VS Code 和 Fiddler 等替代方案。

Elasticsearch - 简介

Elasticsearch 作为核心的部分,是一个具有强大索引功能的文档存储库,并且可以通过 REST API 来搜索数据。它使用 Java 编写,基于 Apache Lucene,尽管这些细节隐藏在 API 中。
通过被索引的字段,可以用许多不同的聚合方式找到任何被存储(索引)的文档。
但是,ElasticSearch不仅仅只提供对这些被索引文档的强大搜索功能。
快速、分布式、水平扩展,支持实时文档存储和分析,支持数百台服务器和 PB 级索引数据。同时作为 Elastic stack (aka ELK) 的核心,提供了诸如 LogStash、Kibana 和更多的强大应用。
Kibana 是 Elasticsearch 中专门提供强有力的可视化查询Web应用程序。使用Kibana,能非常简单地为 Elasticsearch 中索引的数据创建查询、图表和仪表盘。
Elasticsearch开放了一个 REST API,你会发现许多文档示例是 HTTP 调用,你可以尝试使用 curl 或 postman 等工具。当然,这个 API 的客户端已经用许多不同的语言编写,包括.Net、Java、Python、Ruby和JavaScript等。
如果你想阅读更多,Elasticsearch 官方网站 可能是最好的地方。

Docker是在本地运行的最简方式

在这篇文章中,我们需要先连接到一个 Elasticsearch (和后面的Kibana)的服务器。如果您已经有一个在本地运行或可以使用的服务器,那很好。否则需要先搭建一个服务器。
您可以选择在您的本地机器或可以使用的 VM 或服务器中下载和安装 Elasticsearch 和 Kibana 。不过,建议您使用最简单最纯粹的方式,使用Docker 搭建 Elasticsearch 和 Kibana 。
您可以直接运行以下命令,获取包含Elasticsearch和Kibana的容器。

docker run -it --rm -p 9200:9200 -p 5601:5601 --name esk nshou/elasticsearch-kibana
  • -it 表示以交互模式启动容器,并附加到终端。
  • --rm 表示从终端退出后,容器将被移除。
  • -p 将容器中的端口映射到主机中的端口
  • --name 给容器一个名称,当您不使用的情况下可以用 --rm 手动停止/删除
  • nshou/elasticsearch-kibana 是 Docker Hub中的一个镜像的名称,已经有人帮你准备好了Elasticsearch和Kibana
  • 如果你喜欢在后台运行的话,你可以使用参数-d 代替 --it --rm,并且手动停止/删除容器。

在同一个容器中运行多个应用程序,就像我们现在这种做法,非常适用本文,但不是推荐用于生产容器!

您应该意识到,一旦你删除容器,你的数据就会消失(一旦你使用-rm选项就删除它了)。虽然有利于本地实验,但在实际环境中,如果您不想丢失数据,请参照 "data container" 模式。

Docker是一个很棒的工具,我鼓励你更多地了解它,特别是如果你想做更重要的事情,而不仅仅是跟随本文,在本地快速搭建 Elasticsearch 服务器。在之前的文章 Building DockNetFiddle using Docker and .NET Core 中已经对 .NET Core 搭配 Docker 有很好的介绍。

只需打开 http://localhost:9200 和 http://localhost:5600 ,检查Elasticsearch 和 Kibana 是否都可以使用。(如果您使用docker toolbox,请使用托管Docker的虚拟机ip替换localhost,您可以在命令行中运行 docker-machine env default )。


在docker中运行 Elasticsearch

kibana也准备好了

在 Elasticsearch 中索引和查询

在我们开始编写任何 .Net 代码之前,我们先了解一下一些基本知识。先在 Elasticsearch 索引一些文档(类似于存到数据库),以便我们对它们运行不同的查询。

在这里,我将使用Postman向我们的 Elasticsearch 服务器发送 HTTP 请求,但您可以使用任何其他类似的工具,如 Fiddler或 curl 。

我们要做的第一件事是请求 Elasticsearch 创建一个新的索引 (译者语:类似创建一个表) 并索引一些文档 (译者语:类似于在数据中插入数据) 。这类似于将数据存储在表/集合中,主要区别(和目的)是让 Ela

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值