在Dynamically Updatable Indices 这节,我们说了在es中一个shard其实是lucene中的一个索引,所以在es中你们创建了一个索引其实是一堆shard的集合。你请求es,es则把请求交给相应的shard去处理。
the unit of scale is shard,小规模数据其实一个shard就够,而且能放很多数据,但限制scale的能力
假设创建一个这样的cluster(没人会这样做的)
PUT /my_index
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
replicas会在Replica Shards 这节说
这个是能在非常低价的机器上运行的,MD,不是说的我的Mac吗?
突然有天你成了土豪了,我是boss,不行就加机器,一个shard成2个shard了(我们boss常说的话)
呵呵,SB了,ES没有给土豪快速通道(屌丝好有存在感)
为啥不行呢,因为这个公式
shard = hash(routing) % number_of_primary_shards
ES在建立的时候shard个数是确定的,(说了半天阐述了这个白痴的问题。。。)
!!!我们能做的就是:重建我们的索引数据,用更大的索引,更大的shard,(有哥们吹NB说他们一年reindex 80多次这不是造孽么),所以好好计划一下很重要的
github地址https://github.com/whybangbang/Elasticsearch---The-Definitive-Guide-