Как подключиться к AWS ElasticSearch, используя npmasticsearch и http-aws-es? - PullRequest
0 голосов
/ 31 октября 2018

Я использую пакет npmasticsearch для поиска в моем домене AWS ES. Кажется, все работает нормально, когда я использую Postman для выполнения запросов POST с моими учетными данными AWS IAM. Я хотел сделать то же самое в моем коде (node.js). Я ссылался на этот ответ здесь: Как совершать звонки на elissearch apis через NodeJS?

Вот код:

const elasticsearch     = require('elasticsearch');
const awsHttpClient     = require('http-aws-es');
const AWS               = require('aws-sdk');

const client            = new elasticsearch.Client({ 
    host: 'my-aws-es-endpoint', 
    connectionClass: awsHttpClient,
    amazonES: {
        region: 'us-east-1',
        credentials: new AWS.Credentials('my-access-key','my-secret-key')
    }
});

Но когда я запускаю client.search (), происходит сбой с ошибкой:

Elasticsearch ERROR: 2018-10-31T15:12:22Z
  Error: Request error, retrying
  POST https://my-endpoint.us-east-1.es.amazonaws.com/my-index/student/_search => Data must be a string or a buffer

Это также дает мне предупреждение

Elasticsearch WARNING: 2018-10-31T15:12:22Z
  Unable to revive connection: https://my-endpoint.us-east-1.es.amazonaws.com/

Когда я использую только aws-sdk, он работает нормально (возможно, потому что я подписываю запрос там?)

Может кто-нибудь подсказать, что я тут не так делаю?

1 Ответ

0 голосов
/ 31 октября 2018

Мне удалось решить эту проблему, указав регион. Существует проблема с клиентомasticsearch, когда он не может выбрать регион, который мы указали в

amazonES: {
        region: 'us-east-1',
        credentials: new AWS.Credentials('my-access-key','my-secret-key')
    }
}

Я решил эту проблему, указав регион с помощью AWS.config.region перед кодом выше

AWS.config.region = 'us-east-1';
...