1. 副本分片
到目前为止,我们只讨论了主分片,但是我们还有另一个工具:副本分片。 副本分片的主要目的是为了故障转移(failover),如深入集群生命周期所述:如果持有主分片的节点死亡,则将其副本提升为主分片的角色。
在索引写入时,副本分片做着与主分片相同的工作。新文档首先被索引进主分片然后再同步到其它所有的副本分片。增加副本数并不会增加索引容量。
但是,副本分片可以为读取请求提供帮助。 如果通常情况下,你的索引搜索占很大比重(偏向于查询使用),则可以通过增加副本数量来增加搜索性能,但这样你也会为此付出占用额外的硬件资源的代价。
让我们回到那个具有两个主分片的索引示例中。 我们通过添加第二个节点来增加索引的容量。 添加更多节点不会帮助我们提升索引写入能力,但是我们可以在搜索时通过增加副本分片的数量来充分利用额外硬件资源:
PUT /my_index/_settings
{
"number_of_replicas": 1
}
拥有两个主分片,另外加上每个主分片的一个副本,我们总共拥有四个分片:每个节点一个,如下图所示: