- 主分片(primary shard)在索引创建时指定,后续不可修改
- 副本分片(replica shard),冗余作用,副本无法分片,集群为Yellow
- health API
'''
Green健康,所有主分片和副本分片都可用
Yellow亚健康,部分副分片不可用
Red不健康,部分主分片不可用
'''
- 故障转换
'''
1.master节点出故障,集群重新选举master
2.原master节点上分片的其他节点的副分片,提升为主分片,集群变黄
3.分配新的副本,集群变绿
'''
### 文档到分片映射
- 算法:shard=hash(_routing)% number_of_primary_shards
- 默认_routing是文档id
- 指定自定义路由
'''
PUT 索引名/_doc/文档id?routing=xxxxx自定义
'''
### 分片的生命周期
- Immutable Design(倒排索引的不可变性)
- 在Lucene中,单个倒排索引文件称为Segment
- 当有新文档写入,会生成新的Segment,查询会查所有Segments
- Lucene中有个文件,用来纪录所有Segments信息,叫做Commit Point
- 删除的文档信息,先保存在“.del”文件中,不会立刻删
### 什么是Refresh
- 将Index buffer写入Sgment过程为Refresh
- 周期为Is,Refresh后,数据就可被搜索
- Index buffer被占满,也会触发Refresh
### Transaction Log
- 数据会同时写入Index buffer和Transaction log
- Transaction log默认落盘,直接入盘
- 在ES Refresh时,Iudex buffer被清空,Transaction Log不会清空
- 保证关机数据也不丢失
### Flush
- 调用Refresh,Index Buffer清空且Refresh
- 调用fsync,将缓存中Segments写入磁盘
- 清空Transaction log
- 触发条件: 30分钟 或 Transaction log满了
### Merge
- 合并Segment(减少Segment或删除已删的文档)
- 人为操作命令 POST my_index/_forcemerge