故障排除
编辑故障排除编辑
使用本节中的信息对常见问题进行故障排除,并找到常见问题的答案。
日志记录编辑
客户端提供了几种日志记录选项,可以在出现问题时提供帮助。查看有关 日志记录 的详细文档。
如果您在使用客户端向 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_failure
或 retry_on_status
选项以在另一个节点上执行失败的请求(请参阅 重试失败)。
为了获得最佳性能,请使用支持持久(“保持活动”)连接的 HTTP 库,例如 patron 或 Typhoeus。在您的代码中为 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 上 提交问题。