协调节点默认使用文档ID参与计算(也支持通过routing),以便为路由提供合适的分片。 shard = hash(document_id) % (num_of_primary_shards)

当分片所在的节点接收到来自协调节点的请求后,会将请求写入到Memory Buffer,然后定时 (默认是每隔1秒)写入到Filesystem Cache,这个从Momery Buffer到Filesystem

Cache的过程就叫做refresh;

当然在某些情况下,存在Momery Buffer和Filesystem Cache的数据可能会丢失,ES是通过 translog的机制来保证数据的可靠性的。其实现机制是接收到请求后,同时也会写入到

translog中,当Filesystem cache中的数据写入到磁盘中时,才会清除掉,这个过程叫做 flush;

在flush过程中,内存中的缓冲将被清除,内容被写入一个新段,段的fsync将创建一个新的提 交点,并将内容刷新到磁盘,旧的translog将被删除并开始一个新的translog。

flush触发的时机是定时触发(默认30分钟)或者translog变得太大(默认为512M)时;