zoukankan      html  css  js  c++  java
  • 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开销

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

  • 相关阅读:
    margin负值的应用
    css书写顺序和常用命名推荐
    CSS Hack代码与浏览兼容总结
    高效css选择符
    高级css选择器
    css透明背景兼容方案
    height设置100%不起作用
    deepin安装Motrix,cocomusic
    linux关闭ipv6
    关于text-align无法居中的问题
  • 原文地址:https://www.cnblogs.com/ql211lin/p/10890711.html
Copyright © 2011-2022 走看看