ES中一个搜索请求是怎么流转的
1、搜索请求发送到某一个coordinate node,构建一个priority queue,长度以paging操作from和size为准,默认为10
2、coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地priority queue
3、各个shard将自己的priority queue返回给coordinate node ,并构建一个全局的priority queue
4、replica shard如何提升搜索吞吐量
一次请求要打到所有shard的一个replica/primary上去,如果每个shard都有多个replica,那么同时并发过来的搜索请求可以同时打到其他的replica上去
5、coordinate node构建完priority queue之后,获取到的是一堆doc id等信息,就发送mget请求去所有shard上获取对应的document
6、各个shard将document返回给coordinate node
7、coordinate node将合并后的document结果返回给client客户端
8、一般搜索,如果不加from和size,就默认搜索前10条,按照_score排序
例如:
coordinate node ,根据from和size参数,构建一个priority queue大小就是from+size,from=0,size=10,构建一个0+10大小的队列,from=10000,size=10,构建一个10000+10=10010大小的队列,将请求转发到这个index对应的所有sh