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