菜单

本页使用了机器翻译。某些内容可能不完美。敬请提出宝贵意见和建议。

分享反馈

Elasticsearch 架构:7 个关键组件

目录

分享该页面

Yifat Perry
Yifat Perry

什么是 Elasticsearch?

Elasticsearch 是一个基于 Apache Lucene 构建的免费开源搜索和分析引擎。Elasticsearch 是分布式的,支持所有数据类型,包括数字数据、文本数据、结构化数据、非结构化数据和地理空间数据。Elasticsearch 附带简单的 REST API,并提供可扩展性和快速搜索功能。

Elasticsearch 是 Elastic Stack 的重要组成部分,Elastic Stack 是一组开源工具,包括数据提取、存储、丰富、可视化和分析。堆栈中值得注意的工具有 Elasticsearch、Logstash 和 Kibana (ELK)。

Elasticsearch 架构利用 Lucene 索引构建,并将其与一个分布式模型相结合,该模型将架构分成小组件,称为分片,可分布在多个节点上。

在本文中,您将了解:

Elasticsearch 的主要用途是什么?

Elasticsearch 是一种可扩展的搜索和分析解决方案,支持多租户并提供近乎实时的搜索。您可以使用 Elasticsearch 启用对所有类型的数据和各种位置的搜索。引擎从多个位置提取数据,存储数据,并根据预定义的手动或自动映射对数据进行索引。

由于 Elasticsearch 使用分布式架构,用户可以近乎实时地搜索和分析大量数据。此外,Elasticsearch 在搜索过程中引入了可扩展性,使您能够从一台机器开始,并扩展到数百台。

您可以使用 Elasticsearch 运行全功能(也称为全文)搜索群集,例如文档搜索、产品搜索和电子邮件搜索。但是,这需要高水平的技能和经验。您还可以使用 Elasticsearch 存储待切片和切割的数据,以及需要分组到类别中的数据,例如指标、跟踪和日志。

Elasticsearch 可以部署在各种云环境以及本地。您可以自托管 Elasticsearch 或使用 AWS Elasticsearch 等云服务。

Elasticsearch 的工作原理是什么?

Elasticsearch 使用称为 beats 的运输代理将来自多个源的原始数据传输到 Elasticsearch。数据传输到 Elasticsearch 后,引擎运行数据摄取流程,解析、规范化、丰富和准备数据以进行索引。对数据进行索引后,用户可以运行复杂的查询并使用聚合来检索复杂的数据摘要。

对于可视化和管理,Elastic Stack 提供了一个名为 Kibana 的工具,使用户能够创建实时数据可视化,例如饼图、地图、折线图和直方图。Kibana 还允许您共享仪表板,使用 Canvas 创建自定义动态信息图表,并使用 Elastic Maps 可视化地理空间数据。


Elasticsearch 架构:关键组件

Elasticsearch 架构专为可扩展性和灵活性而构建。核心组件是 Elasticsearch 集群、节点、分片和分析器。

Elasticsearch 集群

Elasticsearch 集群由一组存储数据的节点组成。您可以指定开始与集群一起运行的节点数,以及虚拟或物理服务器的 IP 地址。您可以在 config/elasticsearch.yml 文件中指定此信息,该文件包含所有配置设置。

Elasticsearch 集群中的节点相互连接,每个节点包含一小块集群数据。您可以根据需要运行任意数量的集群。然而,通常一个节点就足够了。当新节点启动时,系统会自动创建集群。节点参与整个集群过程,负责搜索和索引。

Elasticsearch 节点

一般来说,术语节点是指作为集群一部分工作的服务器。在 Elasticsearch 中,节点是实例——它不是机器。这意味着您可以在一台机器上运行多个节点。Elasticsearch 实例由一个或多个基于集群的节点组成。默认情况下,当 Elasticsearch 实例启动时,节点也开始运行。

下面是配置 Elasticsearch 节点的三个主要选项:

  • Elasticsearch 主节点—控制 Elasticsearch 集群—一次处理一个集群状态并将状态广播到所有其他节点。主节点负责所有集群范围的操作,包括索引的创建和删除。
  • Elasticsearch 数据节点—包含数据和倒排索引。这是节点的默认配置。
  • Elasticsearch 客户端节点——用作将传入请求路由到各种集群节点的负载均衡器。

端口 9200 和 9300

Elasticsearch 架构使用两个主要端口进行通信:

  • 端口 9200——用于过滤来自集群外部的请求。此过程满足通过用于查询、索引等的 REST API 发出的请求。
  • 端口 9300 — 用于节点间通信。这发生在传输层。

Elasticsearch 分片

您可以在每个索引上存储的文档数量没有限制。但是,如果索引超出托管服务器的存储限制,Elasticsearch 可能会崩溃。为了防止此问题,将索引拆分为称为碎片的小块。

分片是小型且可扩展的索引单元,用作 Elasticsearch 架构的构建模块。分片使您能够分发操作并提高整体性能。创建索引后,您可以根据需要创建任意数量的分片。每个分片都可以作为一个独立的 Lucene 索引,您可以在集群中的任何位置托管该索引。

Elasticsearch 副本

在 Elasticsearch 中,副本是索引分片的副本。副本用作备份和恢复目的的故障安全机制。副本绝不会放置在包含原始(主)分片的节点上。

为确保可用性,副本存储在不同位置。您可以在创建索引后定义副本,并根据需要创建尽可能多的副本。这意味着您可以存储比主分片更多的副本。

Elasticsearch 分析器

分析器负责将短语和表达式解析为组成术语。这发生在索引过程中。每个分析器由一个标记器和几个标记过滤器组成。当遇到某个表达式时,标记器可以将字符串拆分为预定义的术语。

Elasticsearch 文档

Elasticsearch 架构旨在支持作为 JSON 对象存储的文档的检索。Elasticsearch 支持嵌套结构,这有助于处理复杂的数据和查询。为了跟踪信息,Elasticsearch 使用带有下划线前缀的键,这表示元数据。

使用 Cloud Volumes ONTAP 的 Elasticsearch 存储

NetApp Cloud Volumes ONTAP,领先的企业级存储管理解决方案,在 AWS、Azure 和 Google Cloud 上提供安全、成熟的存储管理服务。Cloud Volumes ONTAP 支持高达 368TB 的容量,并支持各种用例,如文件服务、数据库、DevOps 或任何其他企业工作负载,具有强大的功能集,包括高可用性、数据保护、存储效率、Kubernetes 集成等。

Cloud Volumes ONTAP 支持用于管理云中 SAN 存储的高级功能,可满足 NoSQL 数据库系统的需求,以及可直接从云大数据分析集群访问的 NFS 共享。

此外,Cloud Volumes ONTAP 提供存储效率功能,包括精简配置、数据压缩和重复数据删除,可将存储占用空间和成本降低多达 70%。

有关使用 NetApp 优化 Elasticsearch 部署的更多信息,请立即下载我们的免费 eBook Optimize Elasticsearch Performance and Costs with Cloud Volumes ONTAP。

Drift chat loading