doc value
搜索的时候,要依靠倒排索引去搜索,但是在排序的时候需要依靠正排索引,找到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values
es在建立索引的时候,一方面会建立倒排索引,以供搜索使用;一方面还会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用
doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是很高的,如果内存不够,os会将其写入到磁盘上
举例
比如有两个document,数据如下
document1: { “name”: “jack”, “age”: 27 }
document2: { “name”: “tom”, “age”: 30 }
在es建立正排索引的时候就是这样子的
document | name | age |
---|---|---|
document1 | jack | 27 |
document2 | ton | 30 |
这样在排序的时候es直接拿到正排索引里面的某一列去排序就好了