es数据模型
Sequence Number
每次进行索引操作seqNum自增,主要用于恢复时选择需要恢复哪部分数据
Primary Term
每次主分片易主这个数会增加,主要目的是防止一个陈旧的主分片重新加入进来时进行脏数据的操作,如当一个主分片暂时 离开集群,离开前刚好在进行数据的操作,此时已经选择了新主分片,这是主分片加入进来转发数据操作,其他副本根据最新的集群信息得知新的permaryTerm高于这个主分片的会拒绝执行
会持久化在stat文件中 启动的时候getwayService会读取这个信息
Global Checkpoint
seqNum也可以用于检测知识如果操作很多的时候计算量太大,所以es引入这个 用于检测索引是否一致,主要也是用于恢复的时候
主分片写入成功后 localcheckpoint向前推进,副本分片执行写入操作,如果副本分片写入成功 更新自己的localcheckpoint,同时向主分片上报,主分片接受到副本分片(大多数副本分片)的上报后更新globalcheckpoint,
Sync Id
当一个索引如果5分钟内没有读写的话,es会写入syncId,理论上两个分片数据(一主一副)如果syncid相同那么这两个数据就是一致的,当然恢复时出了判断这个syncId也会判断文档数是否一样,但每次刷盘这个Sync ID会删除 所以适合冷数据
_version
每次文档操作会在请求中加version,比如网络原因等等导致一个请求滞后,这时es会判断 这个version,如果小于 当前的version就会拒绝操作,反之执行操作然后version+1