Kibana Elasticsearch

2024 年 8 月 29 日 | 5 分钟阅读

在本节中,我们将学习 什么是 Elasticsearch、Elasticsearch 的用途、Elasticsearch 的工作原理 以及 其部署选项

什么是 Elasticsearch?

Elasticsearch 是一个开源的、分布式的搜索和分析引擎,适用于所有类型的数据,包括文本数据、数值数据、地理空间数据、结构化数据,甚至是非结构化数据。 它基本上基于 Apache Lucene。

Elasticsearch 最初由 Elasticsearch N.V. 于 2010 年发布。 Elasticsearch 是 Elastic Stack 的核心组件。 Elastic Stack 是一组用于数据摄取、丰富、存储、分析和可视化的开源工具集合,以其简单的 REST API、分布式设计、速度和可扩展性而闻名。 它也称为 ELK Stack,现在提供了一组丰富的轻量级传输代理,称为 Beats,用于发送 Elasticsearch 数据。

Elasticsearch 的用途

使用 Elasticsearch 的主要目的是其速度和可扩展性,以及其无与伦比的索引多种内容类型的能力,这意味着它可以用于以下方面:

  • 应用程序搜索
  • 网站搜索
  • 企业搜索
  • 日志记录和日志分析
  • 基础设施指标和容器监控
  • 应用程序性能监控
  • 地理空间数据分析和可视化
  • 安全分析
  • 商业分析

Elasticsearch 的工作原理

在 Elasticsearch 中,原始数据可以从不同的来源插入,包括日志数据、系统指标数据以及 Web 应用程序数据。 在 Elasticsearch 中,数据摄取是一个解析数据然后对其进行规范化的过程。 之后,它会丰富这些原始数据,然后将其索引到 Elasticsearch 中以供进一步使用。 一旦数据被索引到 Elasticsearch 中,用户就可以针对他们的数据运行复杂的查询,并使用聚合来检索数据的复杂摘要。 可以借助 Kibana 工具创建强大的数据可视化效果。 它还可以在团队成员之间共享仪表板,并且可以在其中管理 Elastic Stack。

Elasticsearch 中的索引含义

Elasticsearch 索引是相关文档的列表。 Elasticsearch 将数据存储为与 JSON 相关的文档。 记录将一组键(字段名称或属性)与其各自的值(字符串、数字、布尔值、日期、值范围、地理位置或其他数据类型)进行比较。

Elasticsearch 使用一种称为倒排索引的数据结构,以实现非常快速的全文搜索。

在 Elasticsearch 中使用 Logstash

在 Elasticsearch 中,Logstash 是 Elastic Stack 的核心产品。 它用于聚合、存储和向 Elasticsearch 提交数据。 Logstash 是一个开源的、服务器端数据处理管道,允许我们同时从多个来源执行摄取、丰富和转换数据,直到它被索引到 Elasticsearch。

Kibana 和 Elasticsearch 的用途

Kibana 是 Elasticsearch 的数据可视化和管理工具,可实时提供直方图、折线图、饼图和地图。 Kibana 还提供专门的软件,例如 Canvas,使用户能够构建基于自定义动态数据的图表,以及用于地理空间数据可视化的 Elastic Maps。

为什么使用 Elasticsearch?

  • 对 elasticise 的追求很快。由于 Elasticsearch 构建在 Lucene 之上,因此它擅长搜索全文。 它也是一种准实时搜索工具。 这意味着从文档被索引到可以搜索的时间之间的延迟非常小,通常为一秒。 因此,Elasticsearch 非常适合时间敏感的案例,例如安全分析和监控基础设施。
  • Elasticsearch 本身就是分布式的。 存储在 Elasticsearch 中的文档分布在不同的容器中,称为分片,这些分片被复制以防硬件故障,从而提供数据的冗余副本。
  • Elasticsearch 包含大量的属性。除了其速度、可扩展性和弹性之外,Elasticsearch 还具有一系列强大的内置功能,可以使存储和搜索数据更加高效,例如数据汇总和索引生命周期管理。
  • Kibana 中的 Elastic Stack 简化了 Kibana 中数据集的摄取、数据的可视化以及数据集结果的报告。与 Beats 和 Logstash 集成使得在索引到 Elasticsearch 之前处理数据变得简单。 Kibana 提供了来自 Elasticsearch 的数据的实时可视化,以及用于快速访问来自应用程序性能监控 (APM)、日志和基础设施指标的数据的用户界面。

Elasticsearch 是免费的吗?

是的,Elasticsearch 可以根据 Apache 2 许可证免费使用。 根据 Elastic 许可证,还有更多额外的免费功能可用,例如付费订阅,可提供对 Elasticsearch 的支持访问以及警报和机器学习等功能。

谁可以将他的工作贡献给 Elasticsearch 项目?

Elasticsearch 是由 Elastic 管理的项目。 Elasticsearch 中的代码库包括来自开发人员方面的 Elastic 内和外贡献。

Elasticsearch GitHub 存储库中的任何人都可能提交 pull 请求。 Elasticsearch 还会对收到的所有 pull 请求进行简单的审查,然后再将所有这些 pull 请求集成到代码库中。

Elasticsearch 的部署选项

Elasticsearch 技术可以通过托管方式或通过 Elasticsearch Service 作为托管服务进行部署,这些服务可在 Amazon Web Services (AWS)、Google Cloud 和 Alibaba Cloud 等云平台上使用,或者可以从互联网上轻松下载并安装在我们的自己的硬件上或云平台中,根据需要。 如果有人想深入了解 Elasticsearch,他可以查阅有关 Elasticsearch 的文档,其中包含下载 Elasticsearch、安装 Elasticsearch 以及如何配置 Elasticsearch 的每一条说明。

Elastic 还为希望从单个控制台访问、控制和跟踪其部署但选择不使用公共云平台的客户提供 Elastic Cloud Enterprise(可以部署在公共云或私有云、虚拟机或裸机硬件上)以及私有订阅级别。

Kibana 或 Elasticsearch 支持的编程语言

Elasticsearch 支持以下编程语言

  • Java 编程语言
  • JavaScript (Node.js) 编程语言
  • Go 编程语言
  • .NET (C#) 编程语言
  • PHP 编程语言
  • Perl 编程语言
  • Python 编程语言
  • Ruby 编程语言

Elasticsearch 支持哪些文本语言?

Elasticsearch 支持从阿拉伯语到泰语的 34 种语言,并为每种脚本提供分析器。 完整的列表可以在 Elasticsearch 语言分析器的文档中找到。 可以添加自定义插件以支持其他语言。

Elasticsearch 是否提供 REST API?

是的,Elasticsearch 还提供了一套全面而高效的 REST API,可执行不同的操作,例如集群健康检查、Web 应用程序中的 CRUD(创建、读取、更新和删除)、索引搜索操作。 它也可用于执行高级搜索操作,例如 Web 应用程序中的过滤和聚合,或者在需要的地方。