一:概念
(1)集群(Cluster): ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。
(2)节点(Node): 形成集群的每个服务器称为节点。
索引(index): 在 ES 中, 索引是一组文档的集合
(3)分片(shard) 当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。 当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的。
(4)副本(Replia) 为提高查询吞吐量或实现高可用性,可以使用分片副本。 副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。 当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。
二:区别 分片与副本的区别在于:
当你分片设置为5,数据量为30G时,es会自动帮我们把数据均衡地分配到5个分片上,即每个分片大概有6G数据,当你查询数据时,ES会把查询发送给每个相关的分片,并将结果组合在一起。
而副本,就是对分布在5个分片的数据进行复制。因为分片是把数据进行分割而已,数据依然只有一份,这样的目的是保障查询的高效性,副本则是多复制几份分片的数据,这样的目的是保障数据的高可靠性,防止数据丢失。
注意 索引建立后,分片个数是不可以更改的,副本数可动态修改。
分片(shard) 又叫主分片,最小的工作单元,存放一部分数据。
一个index默认有五个分片,创建index时可以指定分片数量,后续如果需要修改分片数量,请删库重新写。
分片简单理解 一个物理机器的性能是有瓶颈的,直接往物理机上存数据,存储数量有上限。
ES采用了分片的概念,将海量数据切分成片,每一个分片,存储一部分数据。
在一整个大的集群里,包含很多节点,每个节点又包含很多分片,这样,海量数据由集群来承载,分片(数据)在集群这篇大海里自由游荡。
副本(replica) 又叫从分片,分片的备份,防止数据丢失。
并且当主分片出现物理故障时,从分片顶上去,负责数据的检索等只读请求。
从分片的数量可变,不用重新建库。