Elasticsearch 名词解释

2,020 阅读3分钟

Elasticsearch名词解释,手动翻译,欢迎指正

Cluser | 聚集

cluser 也称聚集,是由一个或者多个 node 组成的集合,保存了你所有的数据并且为所有节点提供索引及搜索的能力。cluser 的名称唯一。在聚集中,你可以有一个或者多个 node

Node | 节点

一个 node 是一个单个服务器,属于 cluser 的一部分,提供了索引及搜索的能力。和 cluser 一样, node 也是通过名字来确保唯一性的。当 node 启动时,会生成一个随机的字符作为 node 的名字。

node 可以通过配置进而加入到特定的 cluser 中。默认的话会被加入到 elasticsearch 这个 cluster

Index | 索引

index 是一些列具有相同特性的文档的集合。类似于关系型数据库中的库。

举例说明,你可以为客户数据创建索引,可以为产品目录创建索引,也可以为其他任何数据创建索引。

需要注意的是,index name 必须为小写字母 ,通常索引的名称会用在索引数据,搜索,更新或者删除数据的地方。

Type | 类型

在一个索引中,你可以定义多个 type ,type 是索引中的逻辑分类。当然这个type的意义完全取决于你。

type 相当于关系型数据数据库中的表。

举例来说,在一个博客系统中,你可以定义一个 user type,可以定义一个 blog type,还可以定义一个 comment type

Document | 文档

一个文档是可以被索引的最基本的单位。

文档相当于关系型数据库中的row,也就是一行行的数据。

例如一个用户可以是一个文档,一个产品可以是一个文档,一条订单记录可以是一个文档。

document 用当前很流行的 JSON 格式展示。

Shards & Replicas 碎片 & 副本

Shards 碎片

一个索引可能会存储大量的数据,进而会让单个节点超出硬件能承受范围。举例来说,存储了10亿文档的单个节点,会占用1TB磁盘空间,并且会导致查询的时候速度很慢。

为了解决这个问题,Elasticsearch 提供了 碎片 也就是 shardsindex 进行划分成更小的部分。 当你创建 index 的时候,你可以简单地指定你想要的碎片数量。每一个碎片具有和 index 完全相同的功能。

碎片最主要的两个作用是:

  • 它允许你水平地切割你的容量体积
  • 它允许你并行地分发作业,提高系统的性能

Replicas 副本

因为各种原因,所以数据丢失等问题会时有发生,碎片也可能会丢失,为了防止这个问题,所以你可以将一个或多个索引碎片复制到所谓的复制碎片,简称为副本。

副本最主要的两个作用是:

  • 它提供了高可用性,以防碎片/节点失败。之于这点,所以副本的永远不要和原始碎片分布在同一个节点上。

  • 它可以扩展系统的吞吐量,因为搜索可以在所有副本执行。

总的来说,每个 index 可以被分布到不同的碎片中,节点 可以有0个或者多个副本。一旦复制了,那么 index 就拥有一个主要的碎片和一个复制的碎片。碎片的数量和副本的数量可以在创建索引之前定义,在索引创建之后,你可以动态地改变副本的数量,但是却不能改变碎片的数量。

默认情况下,Elasticsearch 为每个索引分配了5个主碎片和1个副本,这意味着在你的集群中,如果至少有两个节点,那么每个索引将有5个主碎片和5个复制碎片,总共10碎片/索引。