zoukankan      html  css  js  c++  java
  • Elasticsearch的query phase和fetch phase

    对于一次query查询到数据返回到客户端,经历了两个过程  query phase和fetch phase的过程

    query phase 查询阶段     fetch phase 获取阶段。

    1 query phase

    (1)搜索请求发送到某一个coordinate node,构构建一个priority queue,长度以paging操作from和size为准,默认为10

    必须查询第1000页 每页的大小时10 那么建立的priority queue的大小就是 1000*10+1=100010size的大小

    (2)coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地的priority queue大小和coordination构建的size一致即可。
    (3)各个shard将自己的priority queue返回给coordinate node,并构建一个全局的priority queue。这一步就是query phase的阶段  然后采用fetch phase的过程  从queue得到需要返回的docId 通过routing原理去到每个分片中获取数据,返回给client客户端。

    上面不清楚的看自己的博客:elasticsearch深度搜索

    ********************** replica shard如何提升搜索吞吐量**********************

    一次请求要打到所有shard的一个replica/primary上去,如果每个shard都有多个replica,那么同时并发过来的搜索请求可以同时打到其他的replica上去,

    例如有10个replica节点,每一秒就支持10个请求的查询,提高了并发

    ********************** replica shard如何提升搜索吞吐量**********************

    2.关于fetch phase的过程

    (1)coordinate node构建完priority queue之后,在这粒取到docId,就发送mget请求去所有shard上获取对应的document
    (2)各个shard将document返回给coordinate node
    (3)coordinate node将合并后的document结果返回给client客户端

    *********************一般搜索,如果不加from和size,就默认搜索前10条,按照_score排序*********************

  • 相关阅读:
    Linux-05安装python3,jupyter(朱皮特)
    Linux-04Vim
    calloc()的使用
    根目录挂载位置错误记录
    arm裸机通过uboot运行hello world程序测试结果
    编译Uboot——错误记录
    将make的输出重定向到文件(转)
    Linux下JDK+Eclipse安装
    使用gdb+core查看错误信息
    Ubuntu下安装tftp
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/13022042.html
Copyright © 2011-2022 走看看