Elasticsearch 架构

17 Mar 2025 | 4 分钟阅读

Elasticsearch 是一个用于全文搜索分布式搜索引擎。 在本节中,我们将讨论 Elasticsearch 的物理架构。 我们将看到文档如何在物理或虚拟机之间分布。 除此之外,我们还将看到机器如何协同工作以形成集群。

在 Elasticsearch 架构中,节点和集群起着重要的作用。 这些是 Elasticsearch 架构的中心。 集群中的每个节点都处理想要向集群发送请求的客户端的 HTTP 请求

节点和集群

在开始之前,我们需要了解节点和集群,以便理解 Elasticsearch 的架构,因为这些是 Elasticsearch 架构的中心。 这些是 Elasticsearch 的重要组成部分。 默认情况下,集群中的每个节点都可以处理传输流量和 HTTP 请求。 节点和集群将在下面详细讨论

节点

节点是一个服务器,是存储数据的集群的一部分。 它既可以是虚拟的也可以是物理的。 节点是指 Elasticsearch 的一个实例,而不是一台机器。 因此,任意数量的节点可以在同一台机器上运行。 每当 Elasticsearch 实例启动时,节点就开始运行。

集群 (Cluster)

Elasticsearch 集群是一组 Elasticsearch 节点,这些节点相互连接并共同存储您的所有数据。 每个节点都包含您添加到集群的集群数据的一部分。 您可以使用任意数量的集群,但通常一个节点就足够了。 当节点启动时,会自动创建一个集群。

Elasticsearch Architecture

每个节点都是集群的一部分。 它参与集群的搜索和索引,这意味着节点通过搜索其存储的数据来参与搜索查询。 节点存储数据,这些数据通过搜索查询进行搜索。 让我们通过一个例子来理解 -

您可能有Node A和Node B两个节点。两个节点都有一些数据,这些数据与给定的搜索查询相匹配。 在这里,我们需要理解的是,一个节点包含您的数据的一部分,这些数据通过搜索查询进行搜索。 节点支持以下操作,例如 - 索引和搜索数据或操作现有数据。

  1. 除此之外,还需要知道集群内的每个节点都可以处理想要向集群发送请求的客户端的 HTTP 请求。
  2. 这可以使用集群公开的 HTTP Rest API 来实现。
  3. 给定节点接收到客户端发送的请求,并管理其余的任务。
  4. 它还可以使用传输层将请求转发到给定节点。 另一方面,HTTP 层用于与外部客户端通信。
  5. 默认情况下,所有节点都接受来自客户端的 HTTP 请求。
  6. 此外,集群内的给定节点知道集群中存在的每个节点。
  7. 可扩展性需要多个节点,它可以有效地处理海量数据。
  8. 默认情况下,每个节点也可以指定为主节点。 主节点是具有附加功能的节点。 它协调集群中发生的所有更改,例如 - 添加或删除索引,添加或删除节点,以及它可以更新集群的状态。
  9. 主节点能够更新集群的状态。 在这里,需要注意的一点是只有主节点才能做到这一点。
  10. 每个集群和节点都有一个唯一的名称,这有助于识别它们。 “elasticsearch”是集群的默认名称,而“UUID (通用唯一标识符)”是节点的默认名称。
  11. 这些唯一的名称有助于识别哪个虚拟或物理机器对应于哪个节点。

Elasticsearch 以文档形式存储您的数据。 查看下面以 Elasticsearch 存储的数据的示例。

例如 -

正如您在下面看到的,此数据存储在 JSON 对象内的 _source 字段中

数据在索引内组织。 因为 Elasticsearch 中的每个文档都存储在一个索引中。 索引在逻辑上将所有文档收集在一起,并提供与可扩展性和可用性相关的配置选项。 因此,每当我们需要搜索数据时,都会针对索引执行搜索查询。

Elasticsearch 架构由于分片而具有高度可扩展性,除非您处理大量数据。


下一个主题Elasticsearch 插件