elasticsearch 5.5 query 过程 源码分析

(1)请求 transfer to  任意node 节点 标记为coordinate node

server入口函数 transportSearchAction doExecute方法

coordinate  node 将请求处理形成AbstractSearchAsyncAction的一个继承类,

调用该继承类中的start方法,进而通过使用this调用其父类InitialSearchPhrase中 run方法,轮询各个shard,对每一个shard执行performPhaseOnShard方法,通过调用自身

executePhaseOnShard方法中通过调用SearchTransportService中sendExecuteQuery同时请求发送到指定的shard中,会监听其结果,监听结果会调用onphrasedone方法,其用于判定是否执行executeNextPhase方法

(2)每一个shard 中RequestHandlerRegistry 类启动一个监听方法processMessageReceived方法,此方法获取coordinate node发送来的请求,然后调用SearchService中executeQueryPhase方法,进而调用各种SearchPhrase实现类。

最终会调用lucene中的IndexSearch中的方法返回数据。

posted on 2017-11-29 11:32  zhouzhou0615  阅读(155)  评论(0编辑  收藏  举报

导航