ElasticSearch写入文档的过程

ElasticSearch写入文档的过程

起男 120 2024-12-30

ElasticSearch写入文档的过程

  1. 客户端向es集群中任意节点发送写入请求
  2. 接受到请求的节点(协调节点)根据文档的id和索引的设置,使用哈希函数和取模运算来确定文档应该写入哪个分片
  3. 协调节点根据分片的id,通过集群状态中的路由表找到该分片的主分片所在的节点,并将请求转发给该节点
  4. 主分片收到写入请求后,首先将文档存储在内存中的一个缓冲区中
  5. 为了确保数据的持久性和可靠性,es将每个写入操作记录到事务日志(translog)中
  6. 一旦文档被写入到主分片,主分片会开始将数据异步的同步到其对应的副本分片上
  7. 主分片等待所有副本分片都写入文档后,才向协调节点发送确认信息
  8. es会周期性的执行刷新操作(refresh),刷新操作会将内存缓冲区中的数据创建成一个新的lucene段(segment),然后进行持久化
  9. 持久化操作会将内存中的数据以及translog中的更改写入到磁盘上
  10. 为了优化性能,es会定期进行段合并操作,将多个段合并成一个新段,标识为deleted的文档不会被写入到新的段中