es倒排索引和正排索引

Posted 秦先生的客栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es倒排索引和正排索引相关的知识,希望对你有一定的参考价值。

搜索的时候,要依靠倒排索引;排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values。
在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用。
doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是会很高;如果内存不足够,os会将其写入磁盘上。

倒排索引举例:
doc1: hello world you and me
doc2: hi, world, how are you

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

hello you --> hello, you

hello --> doc1
you --> doc1,doc2

正排索引举例:
doc1: hello world you and me
doc2: hi, world, how are you

sort by age
doc1: { "name": "jack", "age": 27 }
doc2: { "name": "tom", "age": 30 }

document name age
doc1 jack 27
doc2 tom 30

以上是关于es倒排索引和正排索引的主要内容,如果未能解决你的问题,请参考以下文章

ES 索引解析(倒排索引 正排索引)

正排索引倒排索引

seo底层原理第2课:如果是你怎么设计搜索引擎

正排索引与倒排索引(转)

正排索引和倒排索引简单介绍

倒排索引,正排索引与lucene