• ElasticSearch(二十一)正排和倒排索引


    1.区别

    搜索的时候,要依靠倒排索引;排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values

    在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用

    doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是会很高;如果内存不足够,os会将其写入磁盘上

    下面两条document

    doc1: hello world you and me
    doc2: hi, world, how are you

    2.倒排索引,用来进行搜索

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

    3.正排索引,用来进行排序

    document    name        age
    
    doc1        jack        27
    doc2        tom        30    

    sort by age,取出age进行排序

    4.倒排索引的结构 

    (1)包含这个关键词的document list
    (2)包含这个关键词的所有document的数量:IDF(inverse document frequency)
    (3)这个关键词在每个document中出现的次数:TF(term frequency)
    (4)这个关键词在这个document中的次序
    (5)每个document的长度:length norm
    (6)包含这个关键词的所有document的平均长度

    5.倒排索引不可变的好处和坏处

    (1)不需要锁,提升并发能力,避免锁的问题
    (2)数据不变,一直保存在os cache中,只要cache内存足够
    (3)filter cache一直驻留在内存,因为数据不变
    (4)可以压缩,节省cpu和io开销

    倒排索引不可变的坏处:每次都要重新构建整个索引

  • 相关阅读:
    SVN
    Oracle用户、权限、角色管理(转)
    X5学习笔记—给单元格添加颜色
    JdbcTemplae使用入门&&Spring三种连接池配置&&Spring配置文件引用外部properties文件
    依赖注入Bean属性
    IoC容器装配Bean(xml配置方式)(Bean的生命周期)
    Spring配置文件的读取
    Spring IoC反转控制的快速入门
    spring security 权限框架原理
    win7 开机,或重启自动启动 该文件下的
  • 原文地址:https://www.cnblogs.com/ql211lin/p/10890711.html
Copyright © 2020-2023  润新知