Elasticsearch nodejs время ожидания клиента для существует и существуетАлиас - PullRequest
0 голосов
/ 08 января 2020

Я получаю сообщения об ошибках тайм-аута при попытке использования клиентаasticsearch nodejs для проверки наличия индекса или псевдонима в кластере.

Экземпляр elasti c работает на docker с помощью этого docker -композитного файла он отвечает в браузере и на вызов client.ping ():

version: "2.2"
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.1
    container_name: elasticsearch
    environment:
      - cluster.initial_master_nodes=elasticsearch
      - cluster.name=es-cluster
      - node.name=es1
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    expose:
      - "9200"
      - "9300"
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - docker-network

volumes:
  esdata1:
    driver: local

networks:
  docker-network:

Это класс, который подключается к кластеру:

export default class EsClient {

    private static client: Client;

    public static getClient() {
        if (!EsClient.client) {
            const host = `http://localhost:9200`;
            EsClient.client = new Client({
                node: host,
                maxRetries: 5,
                requestTimeout: 10000,
                resurrectStrategy: 'ping'
            });
        }
        return EsClient.client;
    }

}

Вот как я проверяю, существует ли псевдоним:

    static async aliasExists(alias: string) {
        const client = EsClient.getClient();
        const params: any = { name: alias };
        const result = await client.indices.existsAlias(params); // This times out
        // Do stuff
    }

Ошибка тайм-аута:

TimeoutError: Request timed out
    at ClientRequest.<anonymous> (C:\projects\node-cdn\node_modules\@elastic\elasticsearch\lib\Connection.js:89:18)
    at ClientRequest.emit (events.js:210:5)
    at ClientRequest.EventEmitter.emit (domain.js:475:20)
    at Socket.emitRequestTimeout (_http_client.js:690:9)
    at Object.onceWrapper (events.js:299:28)
    at Socket.emit (events.js:210:5)
    at Socket.EventEmitter.emit (domain.js:475:20)
    at Socket._onTimeout (net.js:469:8)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7) {
  name: 'TimeoutError',
  meta: {
    body: null,
    statusCode: null,
    headers: null,
    warnings: null,
    meta: {
      context: null,
      request: [Object],
      name: 'elasticsearch-js',
      connection: [Object],
      attempts: 5,
      aborted: false
    }
  }
}

Это ответ от client.ping (), использующего тот же класс для получить объект клиента:

{
  body: true,
  statusCode: 200,
  headers: {
    'content-type': 'application/json; charset=UTF-8',
    'content-length': '510'
  },
  warnings: null,
  meta: {
    context: null,
    request: { params: [Object], options: [Object], id: 1 },
    name: 'elasticsearch-js',
    connection: {
      url: 'http://localhost:9200/',
      id: 'http://localhost:9200/',
      headers: {},
      deadCount: 0,
      resurrectTimeout: 0,
      _openRequests: 0,
      status: 'alive',
      roles: [Object]
    },
    attempts: 0,
    aborted: false
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...