问题排查
编辑问题排查
编辑使用本节中的信息来排查常见问题,并找到常见问题的答案。
日志记录
编辑客户端提供了多种日志记录选项,可以在出现问题时提供帮助。请查看关于日志记录的详细文档。
如果您在使用客户端向 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。在您的代码中引入库 (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 上提交问题。