ElasticSearch的ingest节点用来在真正对文档进行索引以前作预处理。html
全部的节点都是默认支持ingest的,任何节点均可以处理ingest请求,也能够建立一个专门的Ingest nodes。能够经过在elasticsearch.yml文件中添加以下配置关闭节点上的ingest功能:node
node.ingest: false
为了在真正对文档进行索引以前对文件进行预处理,经过定义包含了多个process的pipeline来实现。每一个process实现了对文档的某种转换,如移除某个字段,重命名某个字段等。app
要使用某个pipeline,只须要在请求中简单的指定pipeline的id就能够了:elasticsearch
PUT my-index/_doc/my-id?pipeline=my_pipeline_id { "foo": "bar" }
能够经过ingest API来定义pipelineide
PUT _ingest/pipeline/my-pipeline-id { "description" : "describe pipeline", "processors" : [ { "set" : { "field": "foo", "value": "bar" } } ] }
其余pipeline操做,simulate是指对请求的文档进行同时操做ui
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。url
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须要安装到全部节点上。code