Accessing Data in Pipelines(访问管道中的数据)

pipeline(管道)中的 processor(处理器)对通过 pipeline(管道)的 document(文档)进行读写访问操作。该 processor(处理器)可以访问 source of document(源文档)中的 fields(字段)以及 document(文档)的 metadata field(元数据字段)。

Accessing Fields in the Source(访问源文档中的字段)

访问 source(源文档)中的 field 是很简单的。您可以简单的通过它们的 name(名字)来引用 fields(字段)。例如 : 

{
  "set": {
    "field": "my_field"
    "value": 582.1
  }
}

除此之外,source(源文档)中的 field(字段)始终可以通过 _source 前缀来访问 : 

{
  "set": {
    "field": "_source.my_field"
    "value": 582.1
  }
}

Accessing Metadata Fields(访问元数据字段)

您可以使用您在 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

Accessing Ingest Metadata Fields(访问 Ingest 的元数据字段)

除了 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 metadatatransient(瞬时的),并且在 pipeline(管道)处理 document(文档)后丢失。因此,ingest metadata 将不会被索引。

以下示例添加了一个名为 receivedfield(字段),它的值是 ingesttimestamp

{
  "set": {
    "field": "received"
    "value": "{{_ingest.timestamp}}"
  }
}

Elasticsearch metadata fields 不一样的是,这个名为 _ingestmetadata fields 可以作为 source of document(源文档)中的有效名称。使用 _source._ingest 来引用 source document(源文档)中的 field(字段)。否则,_ingest 将会被作为一个 ingest metadata field 来解释。

Accessing Fields and Metafields in Templates(访问模版中的字段和元数据字段)

一些 processor(处理器)的设置也支持模板化。所支持模版的设置可以有零到多个 template snippets(模版片段)。一个 template snippets(模版片段)以 {{ 开始并以 }} 结束。在模板中访问 field(字段)和 metadata(元数据)与通过普通的 processor(处理器)field(字段)设置完全相同。

以下示例添加了一个名为 field_cfield(字段)。它的值为 field_afield_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}}"
  }
}