GET或者MGET,必须指定三元组 _index, _type,_id , 是根据_id从正排索引中获取内容。而search不指定_id, 根据关键词从倒排索引中获取内容。
程序入口TransportSingleShardAction的doExecute方法
可以看到是调用异步AsyncSingleAction
先看下异步action的构造函数
1.获取当前es的集群状态clusterState,然后获取nodes
2.检查当前全局是否读阻塞block,阻塞抛异常
3.根据请求解析出 要构建的索引的构造体concreteSingleIndex
4.再检查下,请求是否读阻塞,阻塞抛异常
5.根据请求获取对应的分片shard