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

删除⼀个⽂档

本节知识点回顾
-
可以通过设置 Index Settings,控制数据的分⽚
-
Primary Shard 的值不能修改,修改需要重新 Index。默认值是 5, 从 7 开始,默认值改为 1
-
索引写⼊数据后,Replica 的值可以修改。增加副本,可提⾼⼤并发下的读取性能
-
通过控制集群的节点数,设置 Primary Shard 数,实现⽔平扩展
网友评论