From 9f4fd89aca6ee773f4a133de3f5bc75096a8b439 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:41:22 -0500 Subject: [PATCH] [Backport 8.8] Add docs for bulk helper improvement (#1957) Co-authored-by: Josh Mock --- docs/helpers.asciidoc | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/helpers.asciidoc b/docs/helpers.asciidoc index b78f79399..4815ebc4a 100644 --- a/docs/helpers.asciidoc +++ b/docs/helpers.asciidoc @@ -281,7 +281,7 @@ helper uses those options in conjunction with the Bulk API call. [source,js] ---- const result = await client.helpers.bulk({ - datasource: [...] + datasource: [...], onDocument (doc) { return { index: { _index: 'my-index' } @@ -326,6 +326,33 @@ const result = await client.helpers.bulk({ console.log(result) ---- +[discrete] +==== Modifying a document before operation + +~Added~ ~in~ ~`v8.8.2`~ + +If you need to modify documents in your datasource before it is sent to Elasticsearch, you can return an array in the `onDocument` function rather than an operation object. The first item in the array must be the operation object, and the second item must be the document or partial document object as you'd like it to be sent to Elasticsearch. + +[source,js] +---- +const { Client } = require('@elastic/elasticsearch') + +const client = new Client({ + cloud: { id: '' }, + auth: { apiKey: 'base64EncodedKey' } +}) +const result = await client.helpers.bulk({ + datasource: [...], + onDocument (doc) { + return [ + { index: { _index: 'my-index' } }, + { ...doc, favorite_color: 'mauve' }, + ] + } +}) + +console.log(result) +---- [discrete] [[multi-search-helper]] @@ -574,4 +601,4 @@ const scrollSearch = client.helpers.scrollDocuments({ for await (const doc of scrollSearch) { console.log(doc) } ----- \ No newline at end of file +----