当前位置: 首页 > news >正文

Elasticsearch/OpenSearch 中doc_values的作用

目录

1. 核心作用

2. 适用场景

3. 与 index 参数的对比

4. 典型配置示例

场景 1:仅用于聚合,禁止搜索

场景 2:优化大字段存储

5. 性能调优建议

6. 底层原理


doc_values 是 Elasticsearch/OpenSearch 中用于优化查询和聚合的列式存储结构,其核心作用是为非文本字段(如数值、日期、keyword 等)提供高效、低内存的数据访问方式。


1. 核心作用

  • 列式存储:将字段值按列而非行存储,减少磁盘I/O,提升聚合(Aggregation)、排序(Sorting)、脚本计算(Scripting)效率。

  • 替代倒排索引:当字段的 index: false 时,仍可通过 doc_values 支持基础查询(但性能较慢)。

  • 节省内存:避免将全部字段数据加载到堆内存(Heap),降低 JVM 压力。


2. 适用场景

  • 聚合分析(如 termsavg

  • 排序(如 sort 子句)

  • 脚本字段计算(如 script_field

  • 非文本字段的查询(如数值、日期、keyword 的 term 查询)


3. 与 index 参数的对比

特性index: true (倒排索引)doc_values: true (列式存储)
存储方式行存储(文档→词项映射)列存储(字段值紧凑排列)
主要用途快速文本搜索(如 match聚合、排序、非文本查询
内存占用高(常驻堆内存)低(可基于磁盘操作)
默认启用对非 text 字段默认启用
修改代价重建索引才能关闭可动态调整(需重建数据)

4. 典型配置示例

场景 1:仅用于聚合,禁止搜索
PUT /my_index
{"mappings": {"properties": {"price": {"type": "double","index": false,  // 禁用倒排索引(无法被高效搜索)"doc_values": true  // 允许聚合和排序}}}
}
场景 2:优化大字段存储
PUT /logs
{"mappings": {"properties": {"timestamp": {"type": "date","doc_values": true  // 默认已启用,显式声明便于理解},"raw_data": {"type": "text","doc_values": false  // text 类型不支持 doc_values}}}
}

5. 性能调优建议

  • 禁用不必要的 doc_values
    若字段无需参与聚合/排序,设置 "doc_values": false 可节省磁盘空间(如仅用于检索的 text 字段)。

  • 结合 index: false 使用
    对纯聚合字段关闭倒排索引,减少内存占用。

  • 监控字段数据内存
    通过 _stats/fielddata API 检查高内存消耗的字段。


6. 底层原理

  • 写入时构建:数据插入时同步生成列式存储文件(.dvd 和 .dvm)。

  • 磁盘存储:默认不加载到内存,按需通过文件系统缓存访问。

  • 不可变性:与倒排索引共享相同的段(Segment)机制,段合并时优化。


总结:doc_values 是 OpenSearch/Elasticsearch 中平衡查询性能与资源消耗的关键设计,尤其适合分析型场景。正确配置可显著提升聚合效率,同时避免不必要的内存开销。

相关文章:

  • 统信操作系统自定义快捷键配置音量调节功能指南
  • 第六章 进阶10 实习生的焦虑
  • AI 编程 “幻觉” 风险频发?飞算 JavaAI 硬核技术筑牢安全防线
  • 龙虎榜——20250516
  • 香港 GPU 服务器优势及使用场景解析
  • Python开源项目月排行 2025年4月
  • FC7300 Clock介绍
  • LocaleContextResolver实现多语言切换-笔记
  • MySQL8新特性
  • 通过python安装小智语音服务器端
  • window nvidia-smi命令 Failed to initialize NVML: Unknown Error
  • Elabscience 精准识别 CD4+ T 细胞|大鼠源单克隆抗体 GK1.5,适配小鼠样本的流式优选方案
  • 强化学习算法实战:一个例子搞懂sarsa、dqn、ddqn、qac、a2c及其区别
  • 【生成式AI文本生成实战】DeepSeek系列应用深度解析
  • 读取toml, 合并,生成新文件
  • 最新开源 TEN VAD 与 Turn Detection 让 Voice Agent 对话更拟人 | 社区来稿
  • 【C++】STL简介
  • FC7300 ADC MCAL配置引导
  • 启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块
  • 数据服务共享平台方案
  • 高瓴、景林旗下公司美股持仓揭晓:双双增持中概股
  • 东部沿海大省浙江,为何盯上内河航运?
  • 中国进出口银行:1-4月投放制造业中长期贷款超1800亿元
  • 俄代表团:16日上午将继续“等候乌代表团”
  • 龚正市长调研闵行区,更加奋发有为地稳增长促转型,久久为功增强发展后劲
  • “一百零一个愿望——汉字艺术展”亮相意大利威尼斯