基本配置

编辑

此页面向您展示了客户端提供的可能的基本配置选项。

const { Client } = require('@elastic/elasticsearch')

const client = new Client({
  cloud: { id: '<cloud-id>' },
  auth: { apiKey: 'base64EncodedKey' },
  maxRetries: 5,
  requestTimeout: 60000,
  sniffOnStart: true
})

nodenodes

要使用的 Elasticsearch 端点。
它可以是单个字符串或字符串数组

node: 'https://127.0.0.1:9200'

或者它可以是一个对象(或对象数组),表示节点

node: {
  url: new URL('https://127.0.0.1:9200'),
  tls: 'tls options',
  agent: 'http agent options',
  id: 'custom node id',
  headers: { 'custom': 'headers' }
  roles: {
    master: true,
    data: true,
    ingest: true,
    ml: false
  }
}

auth

您的身份验证数据。您可以使用基本身份验证和 ApiKey
有关更多详细信息,请参阅身份验证
默认值: null

基本身份验证

auth: {
  username: 'elastic',
  password: 'changeme'
}

ApiKey 身份验证

auth: {
  apiKey: 'base64EncodedKey'
}

Bearer 身份验证,适用于 服务帐户令牌。请注意,它不处理自动令牌刷新

auth: {
  bearer: 'token'
}

maxRetries

number - 每个请求的最大重试次数。
默认值: 3

requestTimeout

number - 每个请求的最大请求超时时间(以毫秒为单位)。
默认值: 30000

pingTimeout

number - 每个请求的最大 ping 请求超时时间(以毫秒为单位)。
默认值: 3000

sniffInterval

number, boolean - 每 n 毫秒执行一次嗅探操作。嗅探可能不是适合您的最佳解决方案,请查看此处以了解更多信息。
默认值: false

sniffOnStart

boolean - 客户端启动后执行一次嗅探。嗅探可能不是适合您的最佳解决方案,请查看此处以了解更多信息。
默认值: false

sniffEndpoint

string - 嗅探期间要 ping 的端点。
默认值: '_nodes/_all/http'

sniffOnConnectionFault

boolean - 在连接故障时执行嗅探。嗅探可能不是适合您的最佳解决方案,请查看此处以了解更多信息。
默认值: false

resurrectStrategy

string - 配置节点复活策略。
选项: 'ping''optimistic''none'
默认值: 'ping'

suggestCompression

boolean - 向每个请求添加 accept-encoding 标头。
默认值: false

compression

string, boolean - 启用 gzip 请求体压缩。
选项: 'gzip'false
默认值: false

tls

http.SecureContextOptions - tls 配置
默认值: null

proxy

string, URL - 如果您正在使用 http(s) 代理,您可以在此处放置其 URL。客户端将自动处理与其的连接。
默认值: null

const client = new Client({
  node: 'https://127.0.0.1:9200',
  proxy: 'https://127.0.0.1:8080'
})

const client = new Client({
  node: 'https://127.0.0.1:9200',
  proxy: 'http://user:pwd@localhost:8080'
})

agent

http.AgentOptions, function - http 代理选项,或返回实际 http 代理实例的函数。如果您想完全禁用 http 代理(并禁用 keep-alive 功能),请将代理设置为 false
默认值: null

const client = new Client({
  node: 'https://127.0.0.1:9200',
  agent: { agent: 'options' }
})

const client = new Client({
  node: 'https://127.0.0.1:9200',
  // the function takes as parameter the option
  // object passed to the Connection constructor
  agent: (opts) => new CustomAgent()
})

const client = new Client({
  node: 'https://127.0.0.1:9200',
  // Disable agent and keep-alive
  agent: false
})

nodeFilter

function - 筛选哪些节点不用于请求。
默认值

function defaultNodeFilter (node) {
  // avoid master only nodes
  if (node.roles.master === true &&
      node.roles.data === false &&
      node.roles.ingest === false) {
    return false
  }
  return true
}

nodeSelector

function - 自定义选择策略。
选项: 'round-robin''random'、自定义函数
默认值: 'round-robin'
自定义函数示例

function nodeSelector (connections) {
  const index = calculateIndex()
  return connections[index]
}

generateRequestId

function - 为每个请求生成请求 id 的函数,它接受两个参数:请求参数和选项。
默认情况下,它为每个请求生成一个递增的整数。
自定义函数示例

function generateRequestId (params, options) {
  // your id generation logic
  // must be syncronous
  return 'id'
}

name

string, symbol - 在事件中标识客户端实例的名称。
默认值: elasticsearch-js

opaqueIdPrefix

string - 将用于为任何 X-Opaque-Id 标头添加前缀的字符串。
有关更多详细信息,请参阅 https://elastic.ac.cn/guide/en/elasticsearch/client/javascript-api/current/observability.html#x-opaque-id_support[X-Opaque-Id 支持]。
_默认值:
null

headers

object - 在每个请求中发送的一组自定义标头。
默认值: {}

context

object - 可用于事件中进行可观测性的自定义对象。它将与 API 级别的上下文选项合并。
默认值: null

enableMetaHeader

boolean - 如果为 true,则添加一个名为 'x-elastic-client-meta' 的标头,其中包含一些最少的遥测数据,例如客户端和平台版本。
默认值: true

cloud

object - 用于连接到 Elastic Cloud 的自定义配置。有关更多详细信息,请参阅身份验证
默认值: null
Cloud 配置示例

const client = new Client({
  cloud: {
    id: '<cloud-id>'
  },
  auth: {
    username: 'elastic',
    password: 'changeme'
  }
})

disablePrototypePoisoningProtection

boolean, 'proto', 'constructor' - 客户端可以保护您免受原型污染攻击。请阅读本文以了解有关此安全问题的更多信息。如果需要,您可以完全启用原型污染保护 (false) 或两个检查中的一个 ('proto''constructor')。出于性能原因,默认情况下禁用此功能。请阅读 secure-json-parse 文档以了解更多信息。
默认值: true

caFingerprint

string - 如果配置了此项,请验证签署服务器证书的 CA 证书指纹是否与提供的指纹匹配。仅接受 SHA256 摘要指纹。
默认值: null

maxResponseSize

number - 配置后,它会验证未压缩的响应大小是否小于配置的数字,如果高于配置的数字,则将中止请求。它不能高于 buffer.constants.MAX_STRING_LENGTH
默认值: null

maxCompressedResponseSize

number - 配置后,它会验证压缩的响应大小是否小于配置的数字,如果高于配置的数字,则将中止请求。它不能高于 buffer.constants.MAX_LENGTH
默认值: null