创建子客户端

编辑

在某些用例中,您可能需要多个客户端实例。您可以多次调用 new Client() 来轻松实现这一点,但是您将失去使用单个客户端的所有好处,例如长期连接和连接池处理。为了避免这个问题,客户端提供了一个 child API,它返回一个新的客户端实例,该实例与父客户端共享连接池。

事件发射器在父客户端和子客户端之间共享。如果您扩展父客户端,子客户端将具有相同的扩展,而如果子客户端添加扩展,则父客户端将不会被扩展。

您可以将所有传递给普通客户端的客户端选项传递给 child,但是连接池特定的选项除外(sslagentpingTimeoutConnectionresurrectStrategy)。

如果您在任何父/子客户端中调用 close,则所有客户端都将被关闭。

const { Client } = require('@elastic/elasticsearch')
const client = new Client({
  cloud: { id: '<cloud-id>' },
  auth: { apiKey: 'base64EncodedKey' }
})
const child = client.child({
  headers: { 'x-foo': 'bar' },
  requestTimeout: 1000
})

client.info().then(console.log, console.log)
child.info().then(console.log, console.log)