Elasticsearch 架构

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

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

节点和集群

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

节点

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

集群

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

Elasticsearch Architecture

每个节点都是一部分集群的。它参与集群的搜索和索引,这意味着一个节点通过搜索它存储的数据来参与搜索查询。节点存储由搜索查询搜索的数据。让我们借助示例来理解:

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

  • 除此之外,还必须了解集群中的每个节点都可以为想要向集群发送请求的客户端处理 HTTP 请求。
  • 这可以使用集群公开的 HTTP Rest API 来实现。
  • 给定节点接收该请求,该请求由客户端发送并管理其余任务。
  • 它还可以使用传输层将请求转发到给定节点。另一方面,HTTP 层用于与外部客户端通信。
  • 默认情况下,所有节点都接受来自客户端的 HTTP 请求。
  • 此外,集群中的给定节点知道集群中存在的每个节点。
  • 可扩展性需要多个节点,它可以高效地处理大量数据。
  • 默认情况下,每个节点也可以分配为主节点。主节点是具有附加功能的节点。它协调集群中发生的所有更改,例如-添加或删除索引、添加或删除节点以及它还可以更新集群的状态。
  • 主节点具有更新集群状态的能力。这里需要注意一件重要的事情,只有主节点才能做到这一点。
  • 每个集群和节点都有一个唯一的名称,这有助于识别它们。 "elasticsearch"是集群的默认名称,"UUID(Universally Unique Identifier)"是节点的默认名称。
  • 这些唯一名称有助于识别哪个虚拟机或物理机对应于哪些节点。

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

例如:

{
    "name": "Adward",
    "country": "California"
}

此数据存储在 JSON 对象内的 _source 字段中,如下所示:

{
"_index": "people",
"_type": "_doc",
"_id": "123",
"_version": 1,
"_seq_no": 0,
"primary_term": 1,
"_source": {
"name": "Adward",
        "country": "California"
    }
}

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

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

什么是 AWS ElasticsearchElasticsearch 是一种开源数据库工具,可以轻松部署和操作。它通常用于分析目的和搜索您的日志和数据。基本上,它是一个NoSQL 数据库,以文档格式存储非 ...