摄取处理器

摄取处理器 #

摄取处理器是摄取管道的核心组件——每个处理器在文档被索引前执行一个特定的数据转换操作,例如删除字段、从文本中提取值、转换数据格式或补充衍生信息。

查看当前节点可用的处理器列表:

GET /_nodes/ingest?filter_path=nodes.*.ingest.processors

通用参数 #

所有处理器都支持以下通用参数,可与处理器自身参数一起配置:

参数类型默认值说明
tagstring为处理器打标签,在 _simulate verbose 输出和节点统计指标中可见
descriptionstring处理器描述,出现在 _simulate verbose 响应的 description 字段中
ifstringPainless 脚本条件,返回 true 时才执行
ignore_failurebooleanfalsetrue 时,处理器出错后跳过继续执行后续处理器
on_failurearray处理器失败后的备用处理器列表,详见 处理管道故障

示例——为 set 处理器添加条件、标签和错误处理:

{
  "set": {
    "tag": "set-env",
    "description": "如果缺少 env 字段则设置默认值",
    "if": "ctx.env == null",
    "field": "env",
    "value": "production",
    "ignore_failure": true
  }
}

支持的处理器 #

Easysearch 提供 32 个摄取处理器:28 个来自 ingest-common 插件,1 个来自 ingest-user-agent 插件,1 个来自 ingest-geoip 插件,1 个来自 Rules 插件,1 个来自 AI 插件。

处理器说明
append向数组字段追加一个或多个值
bytes将人类可读字节值转换为数值("1kb"1024
convert转换字段数据类型(string → integer 等)
csv解析 CSV 行并存储为独立字段
date解析日期字符串并设置为文档时间戳
date_index_name根据日期字段将文档路由到时间索引(如 logs-2025.02.20
dissect基于分隔符模式提取结构化字段(比 grok 更快)
dot_expander展开带点号的字段名为嵌套对象("a.b"{"a":{"b":...}}
drop丢弃文档,不索引也不报错
fail强制抛出异常并停止管道执行
foreach对数组字段的每个元素执行指定的处理器
geoip根据 IP 地址添加地理位置信息(需 ingest-geoip 插件)
grok使用正则模式从非结构化文本中提取字段(日志解析利器)
gsub使用正则表达式替换或删除字符串中的子串
html_strip移除 HTML 标签,返回纯文本
join将数组元素拼接为单个字符串
json解析 JSON 字符串为结构化对象
kv解析 key=value
lowercase将字段文本转为小写
pipeline调用另一条管道(模块化复用)
remove删除一个或多个字段
rename重命名字段
script执行 Painless 脚本,可做任意自定义转换
set设置字段值(支持 Mustache 模板)
sort对数组元素排序(升序/降序)
split按分隔符将字符串拆分为数组
trim移除字符串字段的首尾空白
uppercase将字段文本转为大写
urldecode解码 URL 编码的字符串
user_agent解析 User-Agent 字符串,提取浏览器、操作系统等信息(需 ingest-user-agent 插件)
check_match_rules实时规则匹配,为命中规则的文档打标签(需 Rules 插件)
text_embedding将文本字段转换为向量嵌入(需 AI 插件)

插件处理器geoipuser_agentcheck_match_rulestext_embedding 处理器来自独立插件,需安装对应插件后才可使用。