- Cluster(集群) > &emsp;&emsp;集群是一个或多个节点(服务器)的集合,这些节点一起保存整个数据,并在所有节点上提供联合索引和搜索功能。 &emsp;&emsp;一个运行中的 Elasticsearch 实例称为一个 节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。 &emsp;&emsp; 作为用户,我们可以将请求发送到 集群中的任何节点 ,包括主节点。 每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端。 Elasticsearch 对这一切的管理都是透明的。 <center> <img src="https://www.elastic.co/guide/cn/elasticsearch/guide/cn/images/elas_0201.png"> </center> - Node(节点) > 节点是集群的一部分、存储数据并参与集群的索引和搜索功能的单个服务器。 <center> <img src="https://www.elastic.co/guide/cn/elasticsearch/guide/cn/images/elas_0202.png"> </center> - Index > 索引是具有相似特性的文档集合。 - 类似于关系型数据库中"**库**"的概念 - Type > Type是具有一组公共字段的文档定义类型 &emsp;&emsp;例如,假设您运行一个博客平台并将所有数据存储在一个索引中。在该索引中,可以定义用户数据的类型、博客数据的另一种类型以及注释数据的另一种类型。 - 类似于关系型数据库中"**表**"的概念 - Document > 被索引信息的基本单元。 - 类似于关系型数据库的一个记录(行) - 会被压缩成json格式 - Shards & Replicas(分片&副本分片) > 索引可以潜在地存储可以超过单个节点的硬件限制的大量数据。例如,占用1TB磁盘空间的十亿个文档的单个索引可能不适合单个节点的磁盘,或者可能太慢而无法单独为来自单个节点的搜索请求提供服务。 &emsp;&emsp;分片的两个主要原因: - 它允许您水平分割/缩放您的内容卷。 - 它允许你分配和并行操作的碎片(可能在多个节点上)从而提高性能/吞吐量 > 在网络/云环境中,在任何时候都可以预期到故障,在碎片/节点不知何故脱机或由于任何原因消失的情况下,非常有用,并且强烈建议使用故障转移机制。为此,Elasticsearch允许您将一个或多个索引碎片的副本复制到称为副本碎片(replica shards)或简称为副本(replica)中。 &emsp;&emsp;复制是重要的两个主要原因: - 在碎片/节点失败的情况下,它提供了高可用性。由于这个原因,需要注意的是,副本碎片永远不会分配到与原始/主碎片相同的节点上。 - 它允许您扩展搜索量/吞吐量,因为可以并行地在所有副本上执行搜索。 &emsp;&emsp;添加故障转移 > 当集群中只有一个节点在运行时,意味着会有一个单点故障问题——没有冗余。 幸运的是,我们只需再启动一个节点即可防止数据丢失。 &emsp;&emsp;拥有两个节点的集群——所有主分片和副本分片都已被分配。 <center> <img src="https://www.elastic.co/guide/cn/elasticsearch/guide/cn/images/elas_0203.png"> </center>