如何使用Node.js更新(不覆盖)Elasticsearch中的记录?

时间:2019-05-03 21:01:34

标签: node.js elasticsearch amazon-s3 aws-lambda

写Lambda,我正在从S3抓取一个文件,并将其发送到Elasticsearch。当我使用管道连接附加文件时,它可以正确附加,但是会覆盖我的所有字段。如何在响应中保留先前字段的同时将文件附加到记录中?找不到此操作的文档。

我正在使用Elasticsearch.index最初附加文件,该文件可以工作,但会覆盖所有其他字段。我已经尝试过Elasticsearch.update,但是无法正常工作。

s3.getObject({Bucket: bucket, Key: key}, function (err, data) {
               if (err) {
                        console.log(err, err.stack); // an error occurred
                        context.fail();
               } else {
                  console.log('data: ', data); // successful response
                  var attachment = data.Body.toString('base64'); 
                  console.log('attachment: ', attachment);
                  elasticsearch.index(
                 {
                       index: 'files',
                       pipeline: 'attachment',
                       type: 'file',
                       id: key,
                       body: {
                              data: attachment
                             }
                 },
                   function (error, resp) {
                       if (error) {
                          console.trace('index error!', error);
                       } else {
                          console.log('index response', resp);
                          context.succeed();
                       }
                   }
                   );
                }
           });

0 个答案:

没有答案