问题排查

编辑

使用本节中的信息来排查常见问题,并找到常见问题的答案。

日志记录

编辑

客户端提供了多种日志记录选项,可以在出现问题时提供帮助。请查看关于日志记录的详细文档。

如果您在使用客户端向 Elasticsearch 发送请求时遇到问题,我们建议在客户端上启用 tracing 并测试终端中出现的 cURL 命令。

client = Elasticsearch::Client.new(trace: true)
client.info
curl -X GET -H 'x-elastic-client-meta: es=8.9.0,rb=3.2.2,t=8.2.1,fd=2.7.4,nh=0.3.2, User-Agent: elastic-t
ransport-ruby/8.2.1 (RUBY_VERSION: 3.2.2; linux x86_64; Faraday v2.7.4), Content-Type: application/json' 'https://127.0.0.1:9200//?pretty'

测试 cURL 命令可以帮助找出是否存在连接问题或问题是否出在客户端代码中。

排查连接问题

编辑

当使用多个主机时,您可能需要启用 retry_on_failureretry_on_status 选项,以便在另一个节点上执行失败的请求(请参阅失败时重试)。

为了获得最佳性能,请使用支持持久(“保持活动”)连接的 HTTP 库,例如 patronTyphoeus。在您的代码中引入库 (require 'patron') 用于 Faraday 1.x 或适配器 (require 'faraday/patron') 用于 Faraday 2.x,它将被自动使用。

适配器未在 Faraday 上注册

编辑

如果您看到类似以下的消息

:adapter is not registered on Faraday::Adapter (Faraday::Error)

那么您可能需要在您的 Gemfile 中包含适配器库并引入它。当从 Faraday v1 迁移到 Faraday v2 时,您可能会收到此错误。使用 Faraday v2 时的主要更改是,除了默认的 net_http 之外,所有适配器都已移至单独的 gem 中。这意味着如果您不使用默认适配器并且迁移到 Faraday v2,则需要将适配器 gem 添加到您的 Gemfile。

以下是使用 Faraday 2 的不同适配器所需的 gem,而不是它们所基于的库

# HTTPCLient
gem 'faraday-httpclient'

# NetHTTPPersistent
gem 'faraday-net_http_persistent'

# Patron
gem 'faraday-patron'

# Typhoeus
gem 'faraday-typhoeus'

只要包含适配器(除非您使用默认的 net-http),迁移到 Faraday 2 即可解决问题。或者,您可以将 Faraday 的版本锁定在您的项目中为 1.x:gem 'faraday', '~> 1'

迁移到 Faraday v2 至少需要 Ruby 2.6。Faraday v1 需要 2.4

更多帮助

编辑

如果您需要更多帮助,请访问 Elastic 社区论坛,并从社区中的专家(包括来自 Elastic 的人员)那里获得答案。

如果您发现错误、有反馈或发现使用客户端的任何其他问题,请在 GitHub 上提交问题