Shard Overallocation
这节讲shard间的平衡问题,先假设你建了一个index
PUT /my_index
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 0
}
}
这个index有两个shard 0个replicas
官方把2 shard放 1 node上(shard replicas node 不懂看readme)
对于你的代码去请求es,其实只能指向index,下层shard是透明的(当然了,否则不叫集群了,感觉老外废话就是多)
我们现在做一个操作:加一个node,(ES集群建立自己baidu)
可以看到有个shard迁移到了另外一个node中,这样我们就有2个地方存放数据了,而且ES这方面确实厉害,平滑过渡painless,不会影响用户的请求
新建的ES默认5个shard,这个确实够一般的业务存放数据了。
程序员都在想为啥不设置为Shard Splitting呢,你觉得就你聪明吗?作者说了理由:
(1)其实就是在reindex data,但过程会繁重,而且不可控
(2)splitting是非常快的,还是不可控
(3)当你意识到你要splitting的时候其实空间已经不够了
所以还是乖乖reindex吧