在 Elasticsearch 中,搜索的时候,要依靠倒排索引,排序的时候,需要依靠正排索引,看到每个 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 | * |
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 |
在 Elasticsearch 中,搜索的时候,要依靠倒排索引,排序的时候,需要依靠正排索引,看到每个 document 的每个 field,然后进行排序,所谓的正排索引,其实就是 doc values。
在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是 doc values,以供排序,聚合,过滤等操作使用。