⽂档存储在分⽚上
- ⽂档会存储在具体的某个主分⽚和副本分⽚上:例如 ⽂档 1, 会存储在 P0 和 R0 分⽚上
- ⽂档到分⽚的映射算法
- 确保⽂档能均匀分布在所⽤分⽚上,充分利⽤硬件资源,避免部分机器空闲,部分机器繁忙
- 潜在的算法
- 随机 / Round Robin。当查询⽂档 1,分⽚数很多,需要多次查询才可能查到 ⽂档 1
- 维护⽂档到分⽚的映射关系,当⽂档数据量⼤的时候,维护成本⾼
- 实时计算,通过⽂档 1,⾃动算出,需要去那个分⽚上获取⽂档
⽂档到分⽚的路由算法
- shard = hash(_routing) % number_of_primary_shards
- Hash 算法确保⽂档均匀分散到分⽚中
- 默认的 _routing 值是⽂档 id。
- 可以⾃⾏制定 routing数值,例如⽤相同国家的商品,都分配到指定的 shard
- 设置 Index Settings 后, Primary 数,不能随意修改的根本原因