ElasticSearch的ingest节点用来在真正对文档进行索引之前做预处理。
所有的节点都是默认支持ingest的,任何节点都可以处理ingest请求,也可以创建一个专门的Ingest nodes。可以通过在elasticsearch.yml文件中添加如下配置关闭节点上的ingest功能:
node.ingest: false
为了在真正对文档进行索引之前对文件进行预处理,通过定义包含了多个process的pipeline来实现。每个process实现了对文档的某种转换,如移除某个字段,重命名某个字段等。
要使用某个pipeline,只需要在请求中简单的指定pipeline的id就可以了:
PUT my-index/_doc/my-id?pipeline=my_pipeline_id
{
"foo": "bar"
}
可以通过ingest API来定义pipeline
PUT _ingest/pipeline/my-pipeline-id
{
"description" : "describe pipeline",
"processors" : [
{
"set" : {
"field": "foo",
"value": "bar"
}
}
]
}
其他pipeline操作,simulate是指对请求的文档进行同时操作
GET _ingest/pipeline/my-pipeline-id
DELETE _ingest/pipeline/my-pipeline-id
//对下面的dcos进行pipeline操作,pipeline是该simulate请求里面提供的
POST _ingest/pipeline/_simulate
{
"pipeline" : {
// pipeline definition here
},
"docs" : [
{ "_source": {/** first document **/} },
{ "_source": {/** second document **/} },
// ...
]
}
//对下面的dcos进行pipeline操作,pipeline是已经存在的
POST _ingest/pipeline/my-pipeline-id/_simulate
{
"docs" : [
{ "_source": {/** first document **/} },
{ "_source": {/** second document **/} },
// ...
]
}
pipeline里面主要包含2部分,一部分是描述,另外就是process。
process有多种: append, Convert ,Data, Data Index Name, Fail,Foreach,Grok,Gsub,Join,Json,KV, Lowercase, Remove, Rename, Script,Set,Split,Sort,Trim, Uppercase , Dot Expander, URL Decode, 用户也可以定制自己的process,但定制的process需要安装到所有节点上。