一起来学ES —— Bulk剖析
背景 Bulk请求是ES常用的一种multi-document请求,其处理比较复杂,之前一直搞不清请求的处理逻辑,今天就从源码入手,仔细剖析一下其执行逻辑。 时序分析 简单而言,Bulk的时序如下图所示,Http节点只将包转为TCP,ingest节点进行些预设的前置处理,然后按shard拆分,再把按shard拆开的bulk再发到真实的data节点上,最后由data节点进行主副本同步写入。 具体流程 RestControllor 接收请求,dispatch到对应的handler上 BaseRestHandler 调用 RestBulkAction 进行前置处理,请求转为 BulkRequest NodeClient根据 ActionModule 注册的映射关系,找到TransportBulkAction作为tcp的处理逻辑 TransportBul