From 69915950fa9e62bcb17713daabdb8aa5abf6eaa3 Mon Sep 17 00:00:00 2001 From: Josh Mock Date: Tue, 25 Jul 2023 11:05:25 -0500 Subject: [PATCH] Add docs for bulk helper improvement (#1951) (cherry picked from commit 80ba91645be56961fcf1d435fbeca5cc70d2a9bb) --- 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 +----