📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

rollup.max_docs 配置项用于控制Rollup 索引自动滚动前的最大文档数

当 Rollup 索引达到此文档数时,系统会自动创建新索引,后续的 Rollup 数据将写入新索引。

配置项属性 #

  • 配置路径: rollup.max_docs
  • 数据类型: Long(64位整数)
  • 默认值: 20000000(2000万)
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 是(可以动态更新)
  • 废弃状态: 已废弃

配置项详解 #

工作机制 #

自动滚动机制

Rollup 索引增长:
├── 文档数: 10,000,000
├── 文档数: 15,000,000
├── 文档数: 20,000,000 ← 达到 max_docs
├── 触发滚动 ✅
└── 创建新索引


新索引:
rollup-index-000001 (旧)
    │
    ├── 20,000,000 文档
    └── 满足条件


rollup-index-000002 (新)
    │
    ├── 0 文档
    └── 接收新数据 ✅

滚动条件 #

滚动条件判断

max_docs = 20,000,000:

文档数 < max_docs:
├── 继续写入当前索引
└── 不触发滚动


文档数 >= max_docs:
├── 触发滚动条件
├── 创建新索引
├── 后续数据写入新索引
└── 旧索引变为只读


配合其他条件:
├── max_docs: 文档数限制
├── hours_before: 时间限制
└── 综合判断

配置建议 #

生产环境(默认) #

rollup:
  max_docs: 20000000  # 默认值

建议: 大多数场景使用默认值。

大文档量 #

rollup:
  max_docs: 50000000  # 增加限制

建议: 文档量特别大时使用。

小文档量 #

rollup:
  max_docs: 5000000  # 减少限制

建议: 需要更频繁滚动时使用。

按任务覆盖 #

// 覆盖特定任务
PUT /_cluster/settings
{
  "transient": {
    "rollup.index_max_docs.job_hourly": 1000000
  }
}

建议: 为特定任务设置不同值。

代码示例 #

基础配置 #

rollup:
  max_docs: 20000000

完整 Rollup 配置 #

rollup:
  max_docs: 20000000
  hours_before: 48

动态更新 #

PUT /_cluster/settings
{
  "transient": {
    "rollup.max_docs": 50000000
  }
}

任务级别配置 #

PUT /_cluster/settings
{
  "transient": {
    "rollup.index_max_docs.job_daily": 10000000,
    "rollup.index_max_docs.job_weekly": 50000000
  }
}

相关配置 #

配置项作用默认值
max_docs最大文档数20000000
hours_before时间边界-

注意事项 #

  1. 默认值: 默认值为 2000 万文档。

  2. 动态更新: 可以动态更新。

  3. 按任务覆盖: 可以为特定任务设置不同值。

  4. 索引滚动: 达到限制时自动创建新索引。

  5. 查询影响: 新增文档会写入新索引。

  6. 存储管理: 有助于管理索引大小。

  7. 已废弃: 配置项已废弃。

  8. 监控建议: 监控索引文档数。

  9. 性能考虑: 文档数过多可能影响查询性能。

  10. 合理设置: 根据数据量和查询需求调整。