{
"cars": {
"settings": {
"index": {
"creation_date": "1504521792779",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "UBbcVaC6QrKa4k9lBYPTZw",
"version": {
"created": "5050199"
},
"provided_name": "cars"
}
}
}
}
P: P0 P1 P4 P2 P3
R: R0,R1 R2 R3 R4
5个主分片:P0-4
1个副本集: R0-4
我们可以看到,不会出现PX, RX同时出现在一个节点。
假设,es_data_0 P1,P4这个节点发生异常,P1/P4数据丢失,但是R4/R1还在,可以正常恢复数据.
shard = hash(routing) % number_of_primary_shards
shard = hash(id) % 5
0, 1, 2, 3, 4
-------------------
这就解释了为什么我们要在创建索引的时候就确定好主分片的数量 并且永远不会改变这个数量:因为如果数量变化了,那么所有之前路由的值都会无效,文档也再也找不到了。