如何在AWS Lambda中连接ElasticSearch

时间:2018-09-21 05:35:20

标签: javascript aws-lambda aws-sdk aws-elasticsearch

我已经创建了ElasticSearch服务的公共实例。我找不到任何有关如何将lambda函数连接到它的适当示例。
我想到了使用带有JavaScript的AWS-SDK(类:AWS.ES)进行连接。但找不到方法。
如何创建连接并对其进行基本查询?

1 个答案:

答案 0 :(得分:0)

这是给您的示例代码。我已经在我的lambda函数中实现

var elasticsearch=require('elasticsearch');
var esInput = getRequireFormat(data);

elasticSearch(esInput, function(err, response) {
  if (err) {
    callback(null, err);
  } else {
    callback(null, response);
  }
});

function elasticSearch(data, callback) {
  var client = new elasticsearch.Client({
    hosts: [
      process.env['elasticsearch'] // lambda and elastic search connection
    ]
  });
  client.bulk({
    body: data // query
  }, function(err) {
    if (err) {
      callback(err);
    } else {
      callback(null, 'Success');
    }
  });
}

function getRequireFormat(data) {
  data = JSON.parse(data.toString());
  var i;
  var length = data.length * 2;
  var x = 0;

  for (i = 0; i < length;) {
    (function(i) {

      const json = {
        'index': {
          '_index': data.name.toLowerCase(),
          '_type': data.type,
          '_id': data.x
        }
      };
      data.splice(i, 0, json);
      x = x + 1;
    })(i);
    i = i + 2;
  }
  return data;
}