doc_values
编辑doc_values
编辑大多数字段默认情况下是索引的,这使得它们可以被搜索。倒排索引允许查询在唯一的排序术语列表中查找搜索词,并由此立即访问包含该术语的文档列表。
排序、聚合以及在脚本中访问字段值需要不同的数据访问模式。我们需要能够查找文档并找到它在字段中拥有的术语,而不是查找术语并找到文档。
Doc values 是在文档索引时构建的磁盘数据结构,这使得这种数据访问模式成为可能。它们存储与 _source
相同的值,但以面向列的方式存储,这种方式对于排序和聚合更为高效。Doc values 在几乎所有字段类型上都受支持,*但 text
和 annotated_text
字段是明显的例外*。
仅 doc value 字段
编辑数值类型、日期类型、布尔类型、ip 类型、geo_point 类型 和 keyword 类型 在未索引,但仅启用 doc values 的情况下也可以被查询。在 doc values 上的查询性能比在索引结构上的查询性能慢得多,但对于很少查询且查询性能不那么重要的字段来说,这在磁盘使用和查询性能之间提供了一个有趣的权衡。这使得仅 doc value 字段非常适合那些不希望通常用于过滤的字段,例如指标数据上的仪表或计数器。
仅 doc value 字段可以如下配置:
resp = client.indices.create( index="my-index-000001", mappings={ "properties": { "status_code": { "type": "long" }, "session_id": { "type": "long", "index": False } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { status_code: { type: 'long' }, session_id: { type: 'long', index: false } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", mappings: { properties: { status_code: { type: "long", }, session_id: { type: "long", index: false, }, }, }, }); console.log(response);
禁用 doc values
编辑所有支持 doc values 的字段默认情况下都启用了它们。如果您确定不需要对字段进行排序或聚合,或者不需要从脚本访问字段值,则可以禁用 doc values 以节省磁盘空间。
resp = client.indices.create( index="my-index-000001", mappings={ "properties": { "status_code": { "type": "keyword" }, "session_id": { "type": "keyword", "doc_values": False } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { status_code: { type: 'keyword' }, session_id: { type: 'keyword', doc_values: false } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", mappings: { properties: { status_code: { type: "keyword", }, session_id: { type: "keyword", doc_values: false, }, }, }, }); console.log(response);
PUT my-index-000001 { "mappings": { "properties": { "status_code": { "type": "keyword" }, "session_id": { "type": "keyword", "doc_values": false } } } }
您不能禁用 wildcard
字段的 doc values。