(1)elasticsearch 基本概念

集群(Cluster)

集群是一个或者是多个 结点的集合,容纳所有数据并提供索引搜索的能力。每个集群有一个唯一的标识(默认的标识是 elasticsearch )。这个名称很重要,因为结点只能通过集群名称加入集群,确保不在不同环境使用相同的集群名称,以防结点误加入集群。

结点

结点是作为集群组成部分额单台服务器。存储数据并参与索引搜索。类似于集群,每个结点都有一个名称标识。默认的,在启动的时会给节点赋值一个随机的UUID(niversally Unique IDentifier ) 作为名称标识。如果不想用默认的名称,可自己定一个名称。

默认的,每个结点都会加入一个名字为 elasticsearch 的集群,这就意味着如果在相同网络上开 1 到 n 个结点,假设这些结点可互相通信,他们会自动地组成并加入到一个名字是 elasticsearch 的集群。

索引(Index)

Index 是具有相似特征的文档集合(类似于数据库)。比如,我们可以有一个用户数据的索引,一个产品目录分类的索引。每个索引由一个名称表示(必须全部是小写),该名称供其对文档执行索引,搜索,更新,删除操作时引用。

类型(Type)

在一个索引中,可定义 1 到 n 个类型。每个类型为索引的逻辑分类/分区(类似于数据库的数据表)
假设你运行一个博客平台并在单个索引中存储数据,在这个索引中,你可能会为用户数据定义一个类型,为博客数据定义一个类型,为评论数据定义一个类型。

文档(Document)

文档即可被索引的基本信息单元,以 json 格式展示(类似数据库中的数据行)。

分片和副本(Shard & Replica)

index 可能会存储超过单个结点硬额限制的数据,导致请求变慢等,为了解决这个问题,Elasticsearch 提供把索引分割成多个分片(Shard)的能力,在创建索引的时候,可简单的定义想要的分片数量。

创建一个 index 时,你可以设置分片的数量,每个分片本质上是功能完善并且独立的索引,可以被存储到集群中的任意结点上。

进行分片的主要原因:
(1) 允许进行水平扩展;
(2)允许在分片之中(可能在多个结点上)进行并发和并行操作,增加性能和吞吐量。

分片分发的原理以及如何聚合至搜索请求完全由 elasticsearch 进行控制,对用户是透明的。
在网络/云环境中,不难预料系统会出故障,以防 shard/node 出故障, elasticsearch 允许为索引建立一个或者多个副本(replica shard,简称 replica)

副本是很重要的:
(1)提供高可用性,以防 shard/node 的失效。分片副本不应该和原始/主分片在同一个 node 上。
(2)提升搜索能力,因为可以在所有的副本上并行执行。

简而言之,每个索引可以被分隔成多个分片或者0个。一旦创建副本,每一个分配有主分片(源分片)和副本分片(源分片的副本)。分片和副本的数量可以在索引被创建的时候进行分配,之后可以动态修改副本的数量,但是不能修改分片的数量。默认的,每个索引被分为5个主分片和一个副本(每个分片),这意味着,如果你的集群中至少有两个节点(主分片和分片副本不应在同一个node 上,你的索引将会有10个分片(5个主分片和另外5个副本分片)

参考链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html

联系方式

qq:2564493603
欢迎交流

猜你喜欢

转载自blog.csdn.net/Enjolras_fuu/article/details/81879752