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) 编辑 收藏 举报