首页 > 解决方案 > 保持 Elasticsearch 连接处于活动状态

问题描述

我希望让我的弹性搜索的客户端连接保持活跃。我一直在使用弹性客户端,并在索引和搜索其数据存储时取得了一些巨大的成功,但我希望能够创建到弹性搜索节点的连接并保留连接,这样我就不需要不断创建每次我发布到它时都会建立一个新连接。

查看文档后,我发现 swagger 文档有一个 keep-alive 功能,但我已经使用 nodejs 创建了我的客户端,并且没有找到任何功能来做到这一点。

我的客户看起来像这样:

const client = new Client({
  auth: {
    username: 'aSecret',
    password: 'alsoASecret',
  },
  node: 'localhost:9000',
  maxRetries: 3,
  requestTimeout: 15000,
});

我的索引现在非常简单:

await client.index({
  index: 'my-datastore'
  refresh: true,
  body: eventData,
});

如何让我的索引连接保持活动状态,以便我可以将多个事件发送到我的数据存储,而无需连接和重新连接?

标签: node.jselasticsearch

解决方案


的构造函数中有一个keepAlive配置选项。Client它是一个布尔值。参考

keepAlive: 到节点的连接是否应该永远保持打开状态?当您直接连接到 Elasticsearch 时,建议使用此行为。

var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
  auth: {
    username: 'aSecret',
    password: 'alsoASecret',
  },
  node: 'localhost:9000',
  maxRetries: 3,
  requestTimeout: 15000,
  keepAlive: true
}); 

推荐阅读