• ElasticSearch7.3学习(二十五)----Doc value、query phase、fetch phase解析


    1、Doc value

    搜索的时候,要依靠倒排索引;

    排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序。

    所谓的正排索引,其实就是doc values

    在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用,doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是会很高;如果内存不足够,os会将其写入磁盘上

    1.1 倒排索引

    doc1: hello world you and me

    doc2: hi, world, how are you

    term doc1 doc2
    hello *  
    world * *
    you * *
    and *  
    me *  
    hi   *
    how   *
    are   *

    搜索时:

    hello you --> hello, you

    hello --> doc1

    you --> doc1,doc2

    sort by 出现问题,如果需要自定义排序(按照某些字段排序)那么就会出现问题,因为倒排索引已经被分词了。,此时就需要使用正排索引来进行分词

    1.2 正排索引

    doc1: { "name": "jack", "age": 27 }

    doc2: { "name": "tom", "age": 30 }

    document name age
    doc1 jack 27
    doc2 tom 30

    2、文档查询

    关于文档的查询过程,前面博客已经解析过了:ElasticSearch7.3学习(六)----文档(document)内部机制详解

    这里再简单的回顾一下。分为两个步骤,第一query,第二fetch

    2.1 query 

    2.1.1 query phase

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

    (2)coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地的priority queue

    (3)各个shard将自己的priority queue返回给coordinate node,并构建一个全局的priority queue

    2.1.2 replica shard提升搜索吞吐量

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

    2.2 fetch 

    2.2.1 fetch phase

    (1)coordinate node构建完priority queue之后,就发送mget请求去所有shard上获取对应的document

    (2)各个shard将document返回给coordinate node

    (3)coordinate node将合并后的document结果返回给client客户端

     

     



    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    微服务配置配置中心和链路追踪
    android java.io.FileNotFoundException: xxxx (Permission denied)解决办法略解
    Redis6 九:Redis新数据类型 Bitmaps、HyperLogLog 和 Geospatial
    MFC Windows 程序设计[216]之目录检测例程(附源码)
    神经网络算法 知乎,图神经网络 知乎
    idea怎么快速查看所有断点
    Monkey命令相关总结
    数据库技术及应用期末作业
    C Primer Plus(6) 中文版 第9章 函数 9.2 ANSI C 函数原型
    Servlet | 域对象、request对象其它常用的方法
  • 原文地址:https://www.cnblogs.com/xiaoyh/p/16247259.html