分片和复制(shards and replicas)
一个索引能够存储超出单个结点硬件限制的大量数据。好比,一个具备 10 亿文档的索引占据 1TB 的磁盘空间,而任一节点可能没有这样大的磁盘空间来存储或者单个节点处理搜索请求,响应会太慢。node
为了解决这个问题,Elasticsearch 提供了将索引划分红多片的能力,这些片叫作分片。当你建立一个索引的时候,你能够指定你想要的分片的数量。每一个分片自己也是一个功能完善而且独立的“索引”,这个“索引” 能够被放置到集群中的任何节点上。数据库
分片之因此重要,主要有两方面的缘由:json
- 容许你在分片(位于多个节点上)之上进行分布式的、并行的操做,进而提升性能/吞吐量
至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是彻底由 Elasticsearch 管理的,对于做为用户的你来讲,这些都是透明的。网络
在一个网络/云的环境里,失败随时均可能发生。在某个分片/节点由于某些缘由处于离线状态或者消失的状况下,故障转移机制是很是有用且强烈推荐的。为此, Elasticsearch 容许你建立分片的一份或多份拷贝,这些拷贝叫作复制分片,或者直接叫复制。app
复制之因此重要,有两个主要缘由:
- 在分片/节点失败的状况下,复制提供了高可用性。复制分片不与原/主要分片置于同一节点上是很是重要的。由于搜索能够在全部的复制上并行运行,复制能够扩展你
的搜索量/吞吐量
- 总之,每一个索引能够被分红多个分片。一个索引也能够被复制 0 次(即没有复制)或屡次。一旦复制了,每一个索引就有了主分片(做为复制源的分片)和复制分片(主分片的拷贝)。
- 分片和复制的数量能够在索引建立的时候指定。在索引建立以后,你能够在任什么时候候动态地改变复制的数量,可是你不能再改变分片的数量。
- 5.X 默认 5:1 5 个主分片,1 个复制分片
默认状况下,Elasticsearch 中的每一个索引分配 5 个主分片和 1 个复制。这意味着,若是你的集群中至少有两个节点,你的索引将会有 5 个主分片和另外 5 个复制分片(1 个彻底拷贝),这样每一个索引总共就有 10 个分片。
对应关系:
索引 ------------数据库
类型 ------------表
文档------------数据
映射------------对索引类型的配置