Ingest Node
ElasticSearch 5.0 后,引入的一种新的节点类型,默认配置下,每个节点都是 Ingest Node;Ingest Node 具有预处理数据的能力,可拦截 Index,对数据进行预处理
例如:
- 为某个字段设置默认值;
- 重命名某个字段的字段名;
- 对字段值进行 Split 操作;
- 支持设置 Painless Script,对数据进行更加复杂的加工
Pipeline定义
Pipeline是一系列处理器的定义,这些处理器将按照声明的顺序执行。管道包含两个主要字段:description 和processors
- description:用于存储有关管道功能的有用描述。
- processors:参数定义了要按顺序执行的处理器列表。
pipeline基本常用语法
定义字段 foo
字段值为 bar
PUT _ingest/pipeline/my-pipeline
{
"description" : "describe pipeline",
"processors" : [
{
"set" : {
"field": "foo",
"value": "bar"
}
}
]
将源字段message
重命名为msg
"rename" : {
"field": "message",
"target_field": "msg"
}
将源字段message
转换为json格式,放入目标字段data
"json" : {
"field": "message",
"target_field": "data"
}
对@timestamp
日期格式化
"date" : {
"field" :"@timestamp",
"formats":[
"ISO8601"
],
"ignore_failure":false,
"timezone": "Asia/Shanghai"
}
同时支持判断 引入其他pipeline,当数据满足字段data
为2时,会走my-pipeline-2
"pipeline" : {
"name": "my-pipeline-2",
"if": "ctx.data='2' "
}