--- title: "摄取节点配置" date: 2026-03-13 lastmod: 2026-03-13 description: "node.ingest 配置项用于控制节点是否可以运行摄取管道,对文档进行预处理。" tags: ["Node", "节点角色", "摄取管道", "数据预处理"] summary: "配置项作用 # node.ingest 配置项用于控制节点是否可以作为摄取节点(Ingest Node)运行。 摄取节点能够执行摄取管道(Ingest Pipeline),在文档被索引之前对其进行预处理。摄取管道由一系列处理器组成,可以执行诸如提取字段、重命名字段、解析 JSON、地理点处理等操作。 注意:此配置项已被废弃,推荐使用 node.roles 配置来替代。 配置项属性 # 配置路径: node.ingest 数据类型: Boolean(布尔值) 默认值: true 是否可选: 是 作用域: NodeScope(节点级别) 动态更新: 否(需要重启节点生效) 废弃状态: 已废弃,使用 node.roles 替代 配置项详解 # 工作机制 # 摄取节点工作机制 索引请求流程: 启用 ingest (node.ingest: true): ├── 接收索引请求 ├── 检查 pipeline 参数 ├── 执行摄取管道 │ ├── 移除字段 │ ├── 重命名字段 │ ├── 解析 JSON │ ├── 提取数据 │ ├── 转换格式 │ └── 其他处理 └── 索引处理后的文档 禁用 ingest (node." --- ## 配置项作用 `node.ingest` 配置项用于控制**节点是否可以作为摄取节点(Ingest Node)运行**。 摄取节点能够执行摄取管道(Ingest Pipeline),在文档被索引之前对其进行预处理。摄取管道由一系列处理器组成,可以执行诸如提取字段、重命名字段、解析 JSON、地理点处理等操作。 **注意**:此配置项已被废弃,推荐使用 `node.roles` 配置来替代。 ## 配置项属性 - **配置路径**: `node.ingest` - **数据类型**: `Boolean`(布尔值) - **默认值**: `true` - **是否可选**: 是 - **作用域**: NodeScope(节点级别) - **动态更新**: 否(需要重启节点生效) - **废弃状态**: 已废弃,使用 `node.roles` 替代 ## 配置项详解 ## 工作机制 ``` 摄取节点工作机制 索引请求流程: 启用 ingest (node.ingest: true): ├── 接收索引请求 ├── 检查 pipeline 参数 ├── 执行摄取管道 │ ├── 移除字段 │ ├── 重命名字段 │ ├── 解析 JSON │ ├── 提取数据 │ ├── 转换格式 │ └── 其他处理 └── 索引处理后的文档 禁用 ingest (node.ingest: false): ├── 接收索引请求 ├── 忽略 pipeline 参数 ├── 不执行管道处理 └── 直接索引原始文档 ``` ## 摄取管道处理 ``` 摄取管道处理流程 请求: POST /_doc/pipeline=my_pipeline 1. 请求到达摄取节点 │ ├── pipeline 参数存在? │ ├── 是 → 继续处理 │ └── 否 → 直接索引 │ 2. 加载管道定义 │ ├── 查找管道配置 ├── 验证处理器 └── 准备执行 │ 3. 执行处理器序列 │ ├── Processor 1 │ ├── 处理文档 │ └── 传递结果 ├── Processor 2 │ ├── 处理文档 │ └── 传递结果 └── Processor N │ 4. 处理完成 │ └── 索引处理后的文档 常见处理器类型: ├── remove: 删除字段 ├── rename: 重命名字段 ├── set: 添加字段 ├── json: 解析 JSON 字符串 ├── split: 分割字符串 ├── join: 连接数组 ├── uppercase: 转大写 ├── lowercase: 转小写 ├── trim: 去除空格 ├── date: 日期解析 ├── grok: 模式匹配 ├── convert: 类型转换 └── ... ``` ## 角色映射 ``` 废弃配置与新角色映射 旧配置 (node.ingest): node.ingest: true │ ↓ 等效于: node.roles: [ "ingest" ] ✅ 完整角色配置示例: 旧方式: node.master: true node.data: true node.ingest: true 新方式 (推荐): node.roles: [ "master", "data", "ingest" ] 仅摄取节点: 旧方式: node.master: false node.data: false node.ingest: true 新方式 (推荐): node.roles: [ "ingest" ] ✅ 协调节点: 旧方式: node.master: false node.data: false node.ingest: false 新方式 (推荐): node.roles: [] (空列表) ✅ ``` ## 配置建议 ## 生产环境(默认) ```yaml node: ingest: true # 默认值 ``` **建议**: 保持默认值 `true`。大多数节点应支持摄取处理。 ## 纯数据节点 ```yaml node: ingest: false # 禁用摄取 ``` **建议**: 如果数据节点不需要处理管道,可以禁用。 ## 协调节点 ```yaml node: master: false data: false ingest: false # 禁用所有角色 ``` **建议**: 协调节点应禁用摄取功能。 ## 推荐配置(使用新角色) ```yaml # 摄取节点 node.roles: [ "ingest" ] ``` **建议**: 使用 `node.roles` 替代废弃的 `node.ingest`。 ## 代码示例 ## easysearch.yml 基础配置 ```yaml node: ingest: true ``` ## 混合节点配置 ```yaml node: master: true data: true ingest: true ``` ## 仅摄取节点配置 ```yaml node: name: "ingest-node-1" master: false data: false ingest: true ``` ## 协调节点配置 ```yaml node: name: "coordinating-node" master: false data: false ingest: false ``` ## 推荐使用角色配置 ```yaml # 全功能节点 node.roles: [ "master", "data", "ingest" ] # 仅摄取节点 node.roles: [ "ingest" ] # 协调节点 node.roles: [] ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `node.ingest` | 摄取节点角色 | true | | `node.master` | 主节点角色 | true | | `node.data` | 数据节点角色 | true | | `node.roles` | 节点角色列表(推荐) | - | ## 摄取管道示例 ``` 管道定义和使用 1. 定义管道: PUT _ingest/pipeline/my-pipeline { "description": "解析日志", "processors": [ { "grok": { "field": "message", "patterns": ["%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:msg}"] } }, { "date": { "field": "timestamp", "formats": ["ISO8601"] } }, { "remove": { "field": "message" } } ] } 2. 使用管道索引: POST /_doc/pipeline=my-pipeline { "message": "2026-02-04T10:30:00 INFO 某个日志消息" } 3. 处理结果: { "timestamp": "2026-02-04T10:30:00.000Z", "level": "INFO", "msg": "某个日志消息" } ``` ## 性能影响分析 | node.ingest 设置 | 优点 | 缺点 | |------------------|------|------| | true | 支持管道处理 | CPU 和内存开销 | | false | 减少资源占用 | 无法处理管道 | ## 资源消耗对比 ``` 资源消耗分析 启用摄取 (node.ingest: true): ├── CPU 使用 │ ├── 处理器执行 │ ├── 数据转换 │ └── 正则匹配 ├── 内存使用 │ ├── 文档缓存 │ ├── 处理器状态 │ └── 临时数据 └── 延迟增加 ├── 管道处理时间 ├── 文档转换 └── 处理器开销 禁用摄取 (node.ingest: false): ├── CPU 使用: 减少 ✅ ├── 内存使用: 减少 ✅ └── 延迟: 更低 ✅ 推荐配置: ├── 集群中部分节点启用 ingest ├── 专门的摄取节点 ├── 数据节点禁用 ingest └── 协调节点禁用 ingest ``` ## 使用场景 ## 推荐启用 ingest 的场景 - **数据预处理**: 需要在索引前处理文档 - **日志处理**: 解析和格式化日志数据 - **数据清洗**: 标准化输入数据 - **摄取节点**: 专门用于处理管道的节点 ## 推荐禁用 ingest 的场景 - **纯数据节点**: 仅存储和查询数据 - **协调节点**: 不需要处理管道 - **性能敏感**: 对索引延迟要求高 - **资源受限**: CPU 或内存不足 ## 集群规划建议 ``` 集群摄取能力规划 小型集群: ├── 所有节点启用 ingest ├── 简化配置 └── 足够应对需求 中型集群: ├── 专门摄取节点 (2-3 个) ├── 数据节点禁用 ingest └── 协调节点禁用 ingest 大型集群: ├── 摄取节点层 (3+ 个节点) ├── 独立资源 ├── 水平扩展 └── 负载均衡 摄取节点配置: node.roles: [ "ingest" ] ├── CPU: 较高要求 ├── 内存: 适中 └── 磁盘: 无需大容量 ``` ## 注意事项 1. **已废弃**: 此配置项已被废弃,推荐使用 `node.roles`。 2. **需要重启**: 修改此配置需要重启节点。 3. **管道依赖**: 如果禁用 ingest,索引时指定 pipeline 会失败。 4. **资源消耗**: 摄取处理会增加 CPU 和内存使用。 5. **延迟影响**: 管道处理会增加索引延迟。 6. **集群规划**: 合理规划摄取节点数量。 7. **处理器验证**: 测试管道处理器性能。 8. **错误处理**: 管道失败会导致索引失败。 9. **监控建议**: 监控摄取处理性能。 10. **迁移建议**: 新配置使用 `node.roles`。 ## 废弃说明 ``` 配置迁移指南 从废弃配置迁移到新配置 旧配置: node.master: true node.data: true node.ingest: true 新配置 (推荐): node.roles: [ "master", "data", "ingest" ] 仅摄取节点: 旧配置: node.master: false node.data: false node.ingest: true 新配置 (推荐): node.roles: [ "ingest" ] 协调节点: 旧配置: node.master: false node.data: false node.ingest: false 新配置 (推荐): node.roles: [] 迁移步骤: 1. 备份当前配置 2. 确定所需角色 3. 更新配置文件 4. 滚动重启节点 5. 验证集群状态 ```