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

配置项作用 #

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: []  (空列表)  ✅

配置建议 #

生产环境(默认) #

node:
  ingest: true  # 默认值

建议: 保持默认值 true。大多数节点应支持摄取处理。

纯数据节点 #

node:
  ingest: false  # 禁用摄取

建议: 如果数据节点不需要处理管道,可以禁用。

协调节点 #

node:
  master: false
  data: false
  ingest: false  # 禁用所有角色

建议: 协调节点应禁用摄取功能。

推荐配置(使用新角色) #

# 摄取节点
node.roles: [ "ingest" ]

建议: 使用 node.roles 替代废弃的 node.ingest

代码示例 #

easysearch.yml 基础配置 #

node:
  ingest: true

混合节点配置 #

node:
  master: true
  data: true
  ingest: true

仅摄取节点配置 #

node:
  name: "ingest-node-1"
  master: false
  data: false
  ingest: true

协调节点配置 #

node:
  name: "coordinating-node"
  master: false
  data: false
  ingest: false

推荐使用角色配置 #

# 全功能节点
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. 验证集群状态