Doc Values 介绍 | Elasticsearch: 权威指南 | Elastic
2024-12-21
本章的最后一个话题是关于 Elasticsearch
内部的一些运行情况。在这里我们先不介绍新的知识点,所以我们应该意识到,Doc Values
是我们需要反复提到的一个重要话题。
当你对一个字段进行排序时,Elasticsearch
需要访问每个匹配到的文档得到相关的值。倒排索引的检索性能是非常快的,但是在字段值排序时却不是理想的结构。
转置
倒排索引。
转置
结构在其他系统中经常被称作 列存储
。实质上,它将所有单字段的值存储在单数据列中,这使得对其进行操作是十分高效的,例如排序。
在 Elasticsearch
中,Doc Values
就是一种列式存储结构,默认情况下每个字段的 Doc Values
都是激活的,Doc Values
是在索引时创建的,当字段索引时,Elasticsearch
为了能够快速检索,会把字段的值加入倒排索引中,同时它也会存储该字段的 `Doc Values`。
Elasticsearch
中的 Doc Values
常被应用到以下场景:
因为文档值被序列化到磁盘,我们可以依靠操作系统的帮助来快速访问。当 working set
远小于节点的可用内存,系统会自动将所有的文档值保存在内存中,使得其读写十分高速;
当其远大于可用内存,操作系统会自动把 Doc Values
加载到系统的页缓存中,从而避免了 jvm
堆内存溢出异常。
我们稍后会深入讨论 `Doc Values`。现在所有你需要知道的是排序发生在索引时建立的平行数据结构中。
官方地址:https://www.elastic.co/guide/cn/elasticsearch/guide/current/docvalues-intro.html