在Elasticsearch中,Ingest节点是专门用来处理索引前数据预处理的节点类型。它们包含了一系列可配置的处理器(Processor),这些处理器组成了一个称为管道(Pipeline)的工作流程。当数据被发送到Elasticsearch进行索引时,如果指定了特定的Ingest管道,数据会首先经过Ingest节点进行一系列转换操作,然后再继续进行正常的索引过程。
以下是Ingest节点工作的一般步骤:
-
数据接收:
- 客户端向Elasticsearch集群发送索引请求,并且请求中包含了一个指向特定Ingest管道的引用。
-
管道执行:
- Ingest节点接收到数据后,根据请求中的管道ID查找相应的预定义管道。
- 管道由一系列有序的处理器组成,每个处理器执行特定的数据转换任务,例如:
- 删除不必要的字段
- 格式化日期或数字
- 文本标准化(如转小写、删除停用词)
- 添加额外信息(地理编码、生成哈希值等)
-
数据处理:
- 每个处理器按照其在管道中的顺序依次对文档内容进行处理。
- 处理器可以基于文档的现有字段修改文档,也可以添加新的字段或元数据。
-
后续处理:
- 当文档通过整个管道的所有处理器之后,它会被传递到下一个阶段,即索引过程。
- 经过Ingest节点处理过的文档会被转发至相应的主分片节点,然后在那里按照Elasticsearch的标准索引流程完成索引创建或更新。
通过这种方式,Ingest节点增强了Elasticsearch的功能,使得在数据正式进入搜索和分析引擎之前,能够以中心化和可定制的方式实现复杂的数据清理、转换和丰富功能。