doc_values
大部分字段默认被索引,这使得它们可以被搜索。倒排索引可以让搜索在一个唯一的排序过的词列表里查询搜索词,并且立刻从中找到包含该搜索词的文档列表。
排序、聚合以及在脚本中访问字段,这都要求一个不同的数据访问模式。我们不需要查找词并找到文档,而是需要能够查找文档并查找包含该词的字段。
doc_valuies
启用的字段是存储在磁盘上的数据结构,在文档被索引时创建,它使这种数据访问模式成为可能。它们存储与_source相同的值,但是以面向列的方式存储,这样可以更有效地进行排序和聚合。几乎所有字段类型都支持doc_valuies
,但text
和annotated_text
字段除外。
所有支持doc_values
参数的字段都默认启用了。如果你确定不需要在一个字段上排序、聚合或通过脚本字段访问到该字段的值,你可以禁用doc_values
,以节省磁盘空间:
PUT my_index
{
"mappings": {
"properties": {
"status_code": { -----------1------------
"type": "keyword"
},
"session_id": { -----------2------------
"type": "keyword",
"doc_values": false
}
}
}
}
status_code
字段默认开启了doc_values
session_id
字段禁用了doc_values
,但是仍然可以通过这个字段搜索文档,但是不能在这个字段上排序、聚合或者从脚本访问该字段的值,如果这样做的话,es会抛出一个异常