【发布时间】:2019-10-24 14:27:05
【问题描述】:
我通过 elasticsearch-model 和 elasticsearch-rails gems 在 Rails 应用程序中使用 Elasticsearch。
以前一切正常,但经过一些更新后,现在每当我尝试与远程集群 (AWS Elasticsearch) 交互时都会收到连接失败错误。
> MyModel.__elasticsearch__.create_index! force: true
=> Faraday::ConnectionFailed (execution expired)
我正在努力找出导致此连接错误的原因。在搜索了类似的问题后,我调整了超时时间,尝试了各种 http、https 和裸 url 的组合,但没有成功。
调试此连接错误的明智方法是什么?
我的 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
【问题讨论】:
标签: ruby-on-rails elasticsearch