我的 Rails 应用程序目前使用 Elasticsearch 与 elasticsearch-model 和 elasticsearch-rails gem 进行集成。在 config/initializers/elasticsearch.rb 文件中,我对其进行了如下配置:
config = {
log: Rails.env.development? ? true : false,
}
Elasticsearch::Model.client = Elasticsearch::Client.new(config)
此设置允许在执行 Elasticsearch::Model.client.search 或批量数据操作等操作时登录 Rails 控制台。
现在,我计划过渡到 OpenSearch 并使用 Searchkick gem。初始化 @client 后,我发现 Searchkick 库代码缺少启用日志记录的选项。这是代码的相关部分:
if client_type == :opensearch
OpenSearch::Client.new({
url: ENV["OPENSEARCH_URL"],
transport_options: { request: { timeout: timeout }, headers: { content_type: "application/json" } },
retry_on_failure: 2
}.deep_merge(client_options)) do |f|
f.use Searchkick::Middleware
f.request :aws_sigv4, signer_middleware_aws_params if aws_credentials
end
end
导致我在查询数据时看不到任何日志。
有人可以提供有关如何为开发过程启用日志记录的建议吗?任何帮助将不胜感激。
如果我没记错的话,你必须使用以下内容创建一个初始化程序
config/initializers/searchkick.rb
Searchkick.client = Elasticsearch::Client.new(url: ENV['ELASTICSEARCH_URL'], log: true)
启用日志记录后,Searchkick 现在会将其与 OpenSearch 的交互记录到 Rails 应用程序的日志文件中。您可以在 Rails 应用程序的 log/ 目录中找到这些日志。
这里是弹性文档。
您还可以调整 Elasticsearch 记录器级别。 例如,要将日志记录级别设置为:debug,您可以修改如下配置:
Searchkick.client.transport.logger.level = Logger::DEBUG
我希望这能解决您的问题