故障排除编辑

使用本节中的信息对常见问题进行故障排除,并找到常见问题的答案。

日志记录编辑

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

如果您在使用客户端向 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。在您的代码中为 Faraday 1.x 需要该库(require 'patron')或为 Faraday 2.x 需要适配器(require 'faraday/patron'),它将被自动使用。

适配器未在 Faraday 上注册编辑

如果您看到如下消息

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

那么您可能需要在 Gemfile 中包含适配器库并 require 它。从 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'

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

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

更多帮助编辑

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

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