--- title: "Rollup 最大文档数配置" date: 2026-02-27 lastmod: 2026-02-27 description: "rollup.max_docs 配置项用于控制 Rollup 索引自动滚动前的最大文档数。" tags: ["Rollup", "索引管理", "自动滚动"] summary: "配置项作用 # 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` 配置项用于控制**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: 时间限制 └── 综合判断 ``` ## 配置建议 ## 生产环境(默认) ```yaml rollup: max_docs: 20000000 # 默认值 ``` **建议**: 大多数场景使用默认值。 ## 大文档量 ```yaml rollup: max_docs: 50000000 # 增加限制 ``` **建议**: 文档量特别大时使用。 ## 小文档量 ```yaml rollup: max_docs: 5000000 # 减少限制 ``` **建议**: 需要更频繁滚动时使用。 ## 按任务覆盖 ```json // 覆盖特定任务 PUT /_cluster/settings { "transient": { "rollup.index_max_docs.job_hourly": 1000000 } } ``` **建议**: 为特定任务设置不同值。 ## 代码示例 ## 基础配置 ```yaml rollup: max_docs: 20000000 ``` ## 完整 Rollup 配置 ```yaml rollup: max_docs: 20000000 hours_before: 48 ``` ## 动态更新 ```json PUT /_cluster/settings { "transient": { "rollup.max_docs": 50000000 } } ``` ## 任务级别配置 ```json 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. **合理设置**: 根据数据量和查询需求调整。