number_of_shards的理解

分片理论知识

  • 分片数量
    总分片数=主分片数(副分片数+1)
    "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 4
    }
    复制代码上面创建索引配置表示,总分片数=1
    (1+4),表示总共5个分片。

  • 分片优势
    通过把分片放在不同节点,可以存储超过单节点容量的数据
    当主分片节点故障后,可升级一个副分片为新的主分片来应对节点故障
    增加副分片,可以把数据存储到更多节点上,支持集群扩容和更好处理并发请求

实验一

  • 两个数据节点
  • 索引设置2个主分片,0个副本分片
//添加索引setting
PUT twitter
{
    "settings" : {
        "number_of_shards" : 2,
        "number_of_replicas" : 0
    }
}
//查看索引setting
GET /twitter/_settings
//插入数据
PUT /twitter/_doc/1?pretty
{
  "name": "John Doe"
}
GET /_cat/indices/twitter?v

health status index   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   twitter GQDcXrB7R0KwzHJnAcRePg   2   0          1            0      3.7kb          3.7kb
GET _cat/shards/twitter?v

index   shard prirep state   docs store ip            node
twitter 1     p      STARTED    0  283b 192.168.1.100 node-2
twitter 0     p      STARTED    1 3.5kb 192.168.1.104 node-3
  • 计算存储
    3.75kb = 3.5kb + 283b
    一个文档只会分片到某一个主分片上,但是其他的主分片,会保存元数据信息

推荐阅读更多精彩内容