💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
## Accessing Data in Pipelines 在一个pipeline中定义的processors会对通过该pipeline的文档进行读写操作.这些processors可以访问源文档的字段以及文档的元数据字段(metadata fields.) ### [](https://www.felayman.com/articles/2017/11/24/1511515806564.html#accessing-fields-in-the-source)Accessing Fields in the Source 访问源文档的字段是相当简单的,你可以直接简单的引用他们的字段名称。比如 ~~~ { "set": { "field": "my_field" "value": 582.1 } } ~~~ 除此之外,也可以通过_source前缀来访问源文档的字段,比如 ~~~ { "set": { "field": "_source.my_field" "value": 582.1 } } ~~~ ### [](https://www.felayman.com/articles/2017/11/24/1511515806564.html#accessing-metadata-fields)Accessing Metadata Fields 你可以用和访问源文档字段的方式一样来访问文档的元数据字段。这是因为Elasticsearch不允许文档的元数据字段和源文档字段相同的原因. 如下的例子将会设置通过该pipeline的文档的_id字段值为1 ~~~ { "set": { "field": "_id" "value": "1" } } ~~~ processor能够直接访问的文档元数据字段有: _index, _type, _id, _routing. ### [](https://www.felayman.com/articles/2017/11/24/1511515806564.html#accessing-ingest-metadata-fields)Accessing Ingest Metadata Fields 除了元数据字段和源文档字段,预处理节点还为通过该pipeline的文档添加了一些ingest字段,这些字段通过_ingest变量来访问.目前,预处理节点只添加了名称为_ingest.timestamp的时间戳来表示Elasticsearch接收批量请求或索引请求后对文档进行预处理的时间. 任何 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 来解释。 ### [](https://www.felayman.com/articles/2017/11/24/1511515806564.html#accessing-fields-and-metafields-in-templates)Accessing Fields and Metafields in Templates 一些 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}}" } } ~~~ 还支持动态字段名。此示例设置以服务值命名的字段,以字段代码的值 ~~~ { "set": { "field": "{{service}}" "value": "{{code}}" } } ~~~