该 pipeline(管道)中的 processor(处理器)对通过 pipeline(管道)的 document(文档)进行读写访问操作。该 processor(处理器)可以访问 source of document(源文档)中的 fields(字段)以及 document(文档)的 metadata field(元数据字段)。
访问 source(源文档)中的 field 是很简单的。您可以简单的通过它们的 name(名字)来引用 fields(字段)。例如 :
{
"set": {
"field": "my_field"
"value": 582.1
}
}
除此之外,source(源文档)中的 field(字段)始终可以通过 _source 前缀来访问 :
{
"set": {
"field": "_source.my_field"
"value": 582.1
}
}
您可以使用您在 source(源文档)中访问 field(字段)一样的方式来访问 metadata fields(元数据字段)。这是可以做到的,因为 Elasticsearch 不会允许 source(源文档)中的 fields(字段) 与 metadata fields(元数据字段)拥有一样的 name(名字)。
以下示例将 document(文档)的 _id*metadata*field(元数据字段)设置为 1 :
{
"set": {
"field": "_id"
"value": "1"
}
}
以下 metadata fields(元数据字段)可以通过 processor(处理器)来访问 : _index,_type,_id,_routing,_parent。
除了 metadata fileds(元数据字段)和 source fields(源文档字段)之外,ingest 也可以添加 ingest metadata 到它处理的 documents(文档)中去。这些 metadata properties(元数据属性)可以在 _ingest key 下进行访问。目前,ingest 会在 ingest metadata 的 _ingest.timestamp key 下添加 ingest timestamp 属性。该 ingest timestamp 是在 Elasticsearch 接收 index(索引)或 bulk request 来预处理 document(文档)的 time(时间)。
任何 processor(处理器)都可以在 document(文档)处理期间添加与 ingest 相关的 metadata(元数据)。Ingest metadata 是 transient(瞬时的),并且在 pipeline(管道)处理 document(文档)后丢失。因此,ingest metadata 将不会被索引。
以下示例添加了一个名为 received 的 field(字段),它的值是 ingest 的 timestamp :
{
"set": {
"field": "received"
"value": "{{_ingest.timestamp}}"
}
}
与 Elasticsearch metadata fields 不一样的是,这个名为 _ingest 的 metadata fields 可以作为 source of document(源文档)中的有效名称。使用 _source._ingest 来引用 source document(源文档)中的 field(字段)。否则,_ingest 将会被作为一个 ingest metadata field 来解释。
一些 processor(处理器)的设置也支持模板化。所支持模版的设置可以有零到多个 template snippets(模版片段)。一个 template snippets(模版片段)以 {{ 开始并以 }} 结束。在模板中访问 field(字段)和 metadata(元数据)与通过普通的 processor(处理器)field(字段)设置完全相同。
以下示例添加了一个名为 field_c 的 field(字段)。它的值为 field_a 和 field_b 的值的 concatenation(串联)。
{
"set": {
"field": "field_c"
"value": "{{field_a}} {{field_b}}"
}
}
以下示例使用 source(源文档)中 geoip.country_iso_code 字段的值来设置 document 将要被索引到的 index(索引)。
{
"set": {
"field": "_index"
"value": "{{geoip.country_iso_code}}"
}
}