Elasticsearch 概念
Elasticsearch 是一个面向文档的 NoSQL 数据库,用于以文档的形式存储数据。它允许用户存储、分析和搜索大量数据。 Elasticsearch 是 ELK stack 的主要产品之一,还有 Logstash、Kibana 和 Beats。但在本教程中,我们只使用 Elasticsearch。本教程将遵循 Elasticsearch 的流程。
让我们讨论 Elasticsearch 中使用的关键概念或重要术语,它们是:
- 节点
- 集群
- 文档
- 索引
- 碎片
- 副本
- 类型
- 映射
下面详细讨论了 Elasticsearch 的这些关键概念:
Node
节点是Elasticsearch的一个实例,用于存储数据。它在 Elasticsearch 实例开始运行时创建。简单来说,它指的是一个正在运行的 Elasticsearch 实例。出于管理目的,节点由其名称标识。
集群
集群是一组一个或多个节点,它们一起工作以保存数据。集群为整个数据提供跨所有节点的搜索功能和联合索引。基本上,它是一组运行 Elasticsearch 引擎的系统。
类似于节点,它也由一个名称标识以用于管理目的。集群的默认名称是 elasticsearch。
Document
该文档是以独特方式的字段集合,以 JSON 格式定义。它用于存储驻留在 Elasticsearch 索引中的数据。所以,它可以被索引。每个文档都属于一种类型并与唯一标识符(UID) 相关联。它以 JSON(键: 值)对表示。在 RDBMS 中,文档表示为表中的一行。
在 Elasticsearch 术语中,Document = Row、Field = Column、Index = Table 和 Cluster = Database。
Index
索引是一组不同类型的文档。它有助于执行搜索、更新和删除操作以及索引。在关系数据库中,索引表示为表,这意味着索引类似于 RDBMS 中的表。
Elasticsearch 允许在单个集群中定义各种索引。为了提高性能,索引使用了分片的概念。
分片
使用集群可以存储大量数据,但可能会超出单个服务器的容量。为了克服这个问题,Elasticsearch 允许将您的索引分成几个部分,称为 shard。因此,将您的索引分成几部分以创建分片。您可以在创建索引时定义所需的分片数量。
创建索引时,可以定义所需的分片数量。每个分片都是独立的且功能齐全。
副本
副本是分片的附加副本。它们像分片一样执行查询。 Elasticsearch 使用户能够创建其索引和分片的副本。
Elasticsearch 提供副本以避免任何类型的故障,并有助于在出现故障时提高数据的可用性。故障可能类似于-节点或分片由于某种原因将脱机。复制不仅增加了数据的可用性,还通过在这些副本中执行并行搜索操作来提高搜索的性能。
Type
在 Elasticsearch 中,为具有通用集合的文档定义了类型领域。它是索引的逻辑类别,其语义取决于用户。
映射
在 Elasticsearch 中,每个索引都有一个与之关联的映射,这是索引中每个单独文档可以保存的数据的模式定义。映射可以自动完成,也可以为索引手动创建。数据推送到索引时,会自动添加映射。
ES 和 RDBMS 的比较
在 Elasticsearch(ES) 中,文档类似于RDBMS(关系数据库)中的行。行的集合创建一个表,在 Elasticsearch 中称为索引。让我们将 Elasticsearch 中使用的术语与 RDBMS 进行比较。
Elasticsearch | 关系型数据库 |
文档 | 行 |
字段 | 列 |
索引 | 表格 |
集群 | 数据库 |
Elasticsearch 是一个分布式搜索引擎,用于全文搜索。在本节中,我们将讨论 Elasticsearch 的物理架构。在其中我们将看到文件是如何跨物理机或虚拟机分布的。与此同时,我们还将看到机器如何 ...