Я использую Elasticsearch в приложении Rails через самоэластичные модели и гемы эластичного поиска.
Раньше все работало нормально, но после некоторых обновлений я теперь получаю ошибку Connection Failed всякий раз, когда пытаюсьвзаимодействовать с удаленным кластером (AWS Elasticsearch).
> MyModel.__elasticsearch__.create_index! force: true
=> Faraday::ConnectionFailed (execution expired)
Я изо всех сил пытаюсь выяснить, что является причиной этой ошибки подключения.После поиска похожих проблем я настроил таймауты и попробовал различные комбинации http, https и naked urls, но безуспешно.
Что является разумным способом отладки этой ошибки подключения?
Мой Elasticsearch инициализируется следующим образом.
#initializers/elasticsearch.rb
require 'faraday_middleware'
require 'faraday_middleware/aws_sigv4'
credentials = Aws::Credentials.new(
ENV.fetch('AWS_ACCESS_KEY_ID'),
ENV.fetch('AWS_SECRET_ACCESS_KEY')
)
config = {
url: ENV.fetch('AWS_ELASTICSEARCH_URL'),
retry_on_failure: true,
transport_options: {
request: { timeout: 10 }
}
}
client = Elasticsearch::Client.new( config ) do |f|
f.request :aws_sigv4, credentials: credentials, service: 'es', region: ENV.fetch('AWS_ELASTICSEARCH_REGION')
end
Elasticsearch::Model.client = client