Приложение My Rails в настоящее время использует Elasticsearch с драгоценными камнями elasticsearch-model и elasticsearch-rails для интеграции. В файле config/initializers/elasticsearch.rb я настроил его следующим образом:
config = {
log: Rails.env.development? ? true : false,
}
Elasticsearch::Model.client = Elasticsearch::Client.new(config)
Эта настройка позволяет регистрироваться в консоли Rails при выполнении таких действий, как Elasticsearch::Model.client.search или операций с большими объемами данных.
Теперь я планирую перейти на OpenSearch и использовать гем Searchkick. При инициализации @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
В результате я не могу видеть журналы при запросе данных.
Может ли кто-нибудь дать предложения о том, как включить ведение журнала процесса разработки? Будем очень благодарны любой помощи.
Ответ Даниила Н. мне не помог. Документ, упомянутый в этом ответе, описывает, как настроить различные типы журналов в OpenSearch, такие как журналы приложений, медленные журналы и журналы задач. Я хочу иметь журналы на сервере Rails при наличии соединения между OpenSearch и Rails, поэтому для отладки в dev env я сделал следующее:
def self.client
@client ||= if Rails.env.production? || Rails.env.staging?
Searchkick.client
else
OpenSearch::Client.new(
url: ENV['OPENSEARCH_URL'],
retry_on_failure: 5,
request_timeout: 120,
log: true
)
end
end