一个索引index默认是有5个shard,构成。

    实列场景:
    假设 IndexA 有2个分片,我们向 IndexA 中插入10条数据 (10个文档),那么这10条数据会尽可能平均的分为5条存储在第一个分片,剩下的5条会存储在另一个分片中。

    如果 IndexA 所有数据文件大小是300G,改怎么定制方案了?(可以通过Head插件来查看)
    建议:(仅参考)
    1、每一个分片数据文件小于30GB
    2、每一个索引中的一个分片对应一个节点
    3、节点数大于等于分片数

    根据建议,至少需要 10 个分片。
    结果: 建10个节点 (Node),Mapping 指定分片数为 10,满足每一个节点一个分片,每一个分片数据带下在30G左右。
    分片查询的配置:
    1:randomizeacross shards
    随机选择分片查询数据,es的默认方式
    2:_local
    优先在本地节点上的分片查询数据然后再去其他节点上的分片查询,本地节点没有IO问题但有可能造成负载不均问题。数据量是完整的。
    3:_primary
    只在主分片中查询不去副本查,一般数据完整。
    4:_primary_first
    优先在主分片中查,如果主分片挂了则去副本查,一般数据完整。
    5:_only_node
    只在指定id的节点中的分片中查询,数据可能不完整。
    6:_prefer_node
    优先在指定你给节点中查询,一般数据完整。
    7:_shards
    在指定分片中查询,数据可能不完整。

    index包含多个shard每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力
    增减节点时,shard会自动在nodes中负载均衡
    primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard
    replica shard是primary shard的副本,负责容错,以及承担读请求负载
    primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改
    primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard
    primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上
    ————————————————
    版权声明:本文为CSDN博主「ChaseDreamBoy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_37502106/article/details/80584041