From d404ee35333a9aa16a96c9d1c991bbee17f95005 Mon Sep 17 00:00:00 2001 From: gameldar Date: Thu, 22 Dec 2016 00:18:33 +0800 Subject: [PATCH] Add ingest-attachment-with-arrays section to ingest attachments doc Added a new section detailing how to use the attachment processor within an array. This reverts commit #22296 and instead links to the foreach processor. --- docs/plugins/ingest-attachment.asciidoc | 52 +++++++++++++++++++++- docs/reference/ingest/ingest-node.asciidoc | 4 ++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/docs/plugins/ingest-attachment.asciidoc b/docs/plugins/ingest-attachment.asciidoc index 44ff41a6dfb..1471fbdae0d 100644 --- a/docs/plugins/ingest-attachment.asciidoc +++ b/docs/plugins/ingest-attachment.asciidoc @@ -106,4 +106,54 @@ NOTE: Extracting contents from binary data is a resource intensive operation and consumes a lot of resources. It is highly recommended to run pipelines using this processor in a dedicated ingest node. -NOTE: To process an array of attachments the {ref}/foreach-processor.html[foreach processor] is required. +[[ingest-attachment-with-arrays]] +==== Using the Attachment Processor with arrays + +To use the attachment processor within an array of attachments the +{ref}/foreach-processor.html[foreach processor] is required. This +enables the attachment processor to be run on the individual elements +of the array. + +For example, given the following source: + +[source,js] +-------------------------------------------------- +{ + "attachments" : [ + { + "filename" : "ipsum.txt", + "data" : "dGhpcyBpcwpqdXN0IHNvbWUgdGV4dAo=" + }, + { + "filename" : "test.txt", + "data" : "VGhpcyBpcyBhIHRlc3QK" + } + ] +} +-------------------------------------------------- + +In this case, we want to process the data field in each element +of the attachments field and insert +the properties into the document so the following `foreach` +processor is used: + +[source,js] +-------------------------------------------------- +{ + "foreach": { + "field": "attachments", + "processor": { + "attachment": { + "target_field": "_ingest._value.attachment", + "field": "_ingest._value.data" + } + } + } +} +-------------------------------------------------- +Note that the `target_field` needs to be set, otherwise the +default value is used which is a top level field `attachment`. The +properties on this top level field will contain the value of the +first attachment only. However, by specifying the +`target_field` on to a value on `_ingest._value` it will correctly +associate the properties with the correct attachment. diff --git a/docs/reference/ingest/ingest-node.asciidoc b/docs/reference/ingest/ingest-node.asciidoc index 8b6a4478115..c34904e92fd 100644 --- a/docs/reference/ingest/ingest-node.asciidoc +++ b/docs/reference/ingest/ingest-node.asciidoc @@ -1166,6 +1166,10 @@ In this example, if the `remove` processor does fail, then the array elements that have been processed thus far will be updated. +Another advanced example can be found in {plugins}/using-ingest-attachment.html[attachment processor documentation]. + + + [[grok-processor]] === Grok Processor