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

x33g5p2x  于2021-03-14 发布在 ElasticSearch  
字(2.5k)|赞(0)|评价(0)|浏览(203)

原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/5.3/accessing-data-in-pipelines.html

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=9406187

贡献者 : [那伊抹微笑],[ApacheCN],[Apache中文网]

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

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(字段)一样的方式来访问 metadatafields(元数据字段)。这是可以做到的,因为 Elasticsearch 不会允许 source(源文档)中的 fields(字段) 与 metadatafields(元数据字段)拥有一样的 name(名字)。

以下示例将 document(文档)的 _idmetadatafield(元数据字段)设置为 1

{
  "set": {
    "field": "_id"
    "value": "1"
  }
}

以下 metadatafields(元数据字段)可以通过 processor(处理器)来访问 : _index_type_id_routing_parent

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

除了 metadatafileds(元数据字段)和 sourcefields(源文档字段)之外,ingest 也可以添加 ingestmetadata 到它处理的 documents(文档)中去。这些 metadata properties(元数据属性)可以在 _ingestkey 下进行访问。目前,ingest 会在 ingestmetadata 的 _ingest.timestamp key 下添加 ingesttimestamp 属性。该 ingesttimestamp 是在 Elasticsearch 接收 index(索引)或 bulkrequest 来预处理 document(文档)的 time(时间)。

任何 processor(处理器)都可以在 document(文档)处理期间添加与 ingest 相关的 metadata(元数据)。Ingestmetadatatransient(瞬时的),并且在 pipeline(管道)处理 document(文档)后丢失。因此,ingestmetadata 将不会被索引。

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

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

Elasticsearchmetadatafields 不一样的是,这个名为 _ingestmetadatafields 可以作为 sourceofdocument(源文档)中的有效名称。使用 _source._ingest 来引用 sourcedocument(源文档)中的 field(字段)。否则,_ingest 将会被作为一个 ingestmetadatafield 来解释。

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

一些 processor(处理器)的设置也支持模板化。所支持模版的设置可以有零到多个 templatesnippets(模版片段)。一个 templatesnippets(模版片段)以 {{ 开始并以 }} 结束。在模板中访问 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}}"
  }
}

相关文章