1. index由多个shard组成(primary shard 和 replica shard)
    2. 每个shard都是一个最小的工作单位,承载部分数据,是一个luence的实例,拥有完整的建立索引和处理请求的能力
    3. 增删节点时,shard会自动负载数据
    4. 对于primary 和 replica shard来说,每个document肯定只存在于一个primary shard和对应的N个replica shard。永远不会存在于多个primary shard。 可以理解为主从节点
    5. replica shard是primary的副本,负责容错 以及承担 读请求
    6. primary shard的数量在创建索引的时候就固定了,replica shard可以修改
    7. primary shard的默认数量是5,replica shard的默认数量是1。即5个primary,每个primary有1个shard,所以总共是10个节点
    8. primary shard 和 replica shard不能放在同一个节点上

    单个node环境下创建index:

    1. 单node下创建index,会默认分配3个primary shard 以及 1个replica shard
    2. 集群status 是 yellow
    3. 这时候 3个primary shard 分配到仅有的1个node上取,另外3个replica shard不可用
    4. 集群可以正常工作,但是一旦宕机,数据全部丢失,且集群不可用。

    两个node环境下创建index:

    1. 单个node情况下,三个primary shard都在单个node里
    2. 当有新的node加入到集群里时,三个replica shard都会加入到新的node里

    ES横向扩容、提升容错性

    • 每个node有更少的shard,那么系统资源分配到的就越多
    • 6个shard分配到3个node上时,允许有一台node宕机。因为无论哪一台挂了,另外两个节点都有完整的数据
      • M1M2 R1R3 M3R1
    • 9个shard分配到3个node上时,允许有两台node宕机。因为任意两台挂了,另外一个节点上都会有完整的数据

    master选举
    当有一个master节点挂了,那么集群会变成red,然后此时会进行选举,将一个replica选举为新的master,此时集群会变成yellow(因为副本没有完全active),如果后续将宕机的节点重启后,会重新加入到集群中,那么集群就会变成green。