Elasti c Обновление поиска не дает результата с node.js - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть elasti c поисковое соединение в моем коде, как показано ниже.

const config = require('../../config/index');
const logger = require('winston');

var elasticsearch = require('elasticsearch');
var elasticClient;

var state = {
  connection: null,
}

exports.connect = function (done) {
try {
    logger.info("elasticsearch 000");
    if (state.connection) return done()
    elasticClient = new elasticsearch.Client({
      host: config.elasticSearch.url,
      log: 'info'
    });

    state.connection = elasticClient;
    logger.info("elasticsearch connected on url : ", config.elasticSearch.url);
    done()

  } catch (e) {
    logger.info("elasticsearch connect exception ", e)
  }

}

exports.get = function () {
  return state.connection
}

Я использую это соединение таким образом ...

function Update(_id, data, callback) {    
 elasticClient.get().update({
    index: indexName,
    type: tablename,
    id: _id,
    retry_on_conflict: 5,
    body: {
        doc: data,
        doc_as_upsert: true
    }
 }, (err, results) => {
    if (err) {
        console.log("= = = = [elasticClient Update err]= = = = =", err);
    }
    return callback(err, results)
})

}

Проблема: Когда я вызываю эту функцию update, это не так возвращая любые данные ... И я получил эту ошибку ...

error :  StatusCodeError: Request Timeout after 30000ms
/node_modules/elasticsearch/src/lib/transport.js:397:9

Примечание: Для Elasti c Поиск соединения, я использую Amazon Elasti c Сервис поиска и я передаю его конечную точку VP C.

Версия узла: 12.14.1

Elasticsearch version 6.3

Пакет. json:"asticsearch ":" 16.6.0"

1 Ответ

1 голос
/ 07 февраля 2020

Когда вы говорите «локальный терминал», вы подразумеваете терминал в своем ноутбуке? Если это так, обратите внимание, что ElasticSearch не должен быть открыт для публикации c Inte rnet, так как такая ваша база данных подвержена утечкам данных (одна неверная конфигурация, и все готово).

В любом случае, Если вы ожидаете, что с какого-нибудь компьютера A вы сможете подключиться к ElasticSearch, а вы не сможете, то в первую очередь я проверю группы безопасности, в которых находится VPC / su bnet база данных. Если БД находится в частном su bnet (как и должно быть), тогда нельзя иметь к ней доступ извне.

Подумайте, как должна работать ваша модель безопасности. Обычно ваш ElasticSearch находится в закрытом su bnet, и вы будете подключаться к нему только из экземпляров, которые подключены к этому su bnet и разрешены в правилах ваших групп безопасности.

...