zoukankan      html  css  js  c++  java
  • 详细描述一下 Elasticsearch 搜索的过程?

    1、搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch;

    2、在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分

    片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的

    优先队列。

    PS:在搜索的时候是会查询 Filesystem Cache 的,但是有部分数据还在 Memory

    Buffer,所以搜索是近实时的。

    3、每个分片返回各自优先队列中 所有文档的 ID 和排序值 给协调节点,它合并

    这些值到自己的优先队列中来产生一个全局排序后的结果列表。

    4、接下来就是 取回阶段,协调节点辨别出哪些文档需要被取回并向相关的分片

    提交多个 GET 请求。每个分片加载并 丰富 文档,如果有需要的话,接着返回

    文档给协调节点。一旦所有的文档都被取回了,协调节点返回结果给客户端。

    5、补充:Query Then Fetch 的搜索类型在文档相关性打分的时候参考的是本分

    片的数据,这样在文档数量较少的时候可能不够准确,DFS Query Then Fetch 增

    加了一个预查询的处理,询问 Term 和 Document frequency,这个评分更准确,

    但是性能会变差。*

  • 相关阅读:
    51nod1363-最小公倍数之和
    [模板] 数论题的一些经验
    WC2019游记 && 课件
    (伪)WC2019题解
    [模板] 后缀自动机&&后缀树
    [模板] 二分图博弈 && BZOJ2463:[中山市选2009]谁能赢呢?
    界面修改日志
    [模板] dp套dp && bzoj5336: [TJOI2018]party
    BZOJ1025:[SCOI2009]游戏
    [模板] BSGS/扩展BSGS
  • 原文地址:https://www.cnblogs.com/programb/p/13019992.html
Copyright © 2011-2022 走看看