使用 ElasticSearch 的 Searchkick returns "Faraday::ConnectionFailed: execution expired"
Searchkick with ElasticSearch returns "Faraday::ConnectionFailed: execution expired"
我一直在使用 searchkick gem 和 elasticsearch,在 Rails 4.2.0 应用程序上没有任何问题。我有一个使用 searchkick 的视频模型。
出于某种原因 rake searchkick:reindex:all
现在一直失败:
Reindexing Video... rake aborted! Faraday::ConnectionFailed: execution
expired
我最初是通过 brew install elasticsearch
安装 elasticsearch 的,returns:
Warning: elasticsearch-1.3.4 already installed
我的 elasticsearch installation/database 是否可能已损坏?如果是这样,刷新它的最佳方法是什么?
根据 https://www.elastic.co/guide/en/elasticsearch/reference/1.4/indices-delete-index.html 我尝试了 curl -XDELETE 'http://localhost:9200/_all'
但这并没有解决错误。
当我将此代码部署到 AWS 时,我的 Mac 和 Elastic Beanstalk 都出现了这个问题(两者之前都正常工作)。
通常经过几个小时的努力,我在发布问题后几分钟就找到了答案...
根据https://github.com/ankane/searchkick/issues/382,我添加了一个初始值设定项:
Searchkick.client = Elasticsearch::Client.new(hosts: ["localhost:9200"], retry_on_failure: true, transport_options: {request: {timeout: 250}})
这似乎解决了问题。如果它再次发生,我会报告。
在config/initializers/elasticsearch.rb
中添加以下代码行
Searchkick.client = Elasticsearch::Client.new(hosts: ["localhost:9200"], retry_on_failure: true, transport_options: {request: {timeout: 250}})
可以根据Rails环境指定。
对我来说,问题出在 URL 中缺少端口。 (我在本地主机上使用 AWS elasticsearch 而不是 运行。)
我变了
ENV['ELASTICSEARCH_URL'] = Rails.application.credentials.dig(:elasticsearch, :url)
至
ENV['ELASTICSEARCH_URL'] = Rails.application.credentials.dig(:elasticsearch, :url) + ':443'
这不会影响我的所有项目,所以我猜这与较新的版本有关。
我一直在使用 searchkick gem 和 elasticsearch,在 Rails 4.2.0 应用程序上没有任何问题。我有一个使用 searchkick 的视频模型。
出于某种原因 rake searchkick:reindex:all
现在一直失败:
Reindexing Video... rake aborted! Faraday::ConnectionFailed: execution expired
我最初是通过 brew install elasticsearch
安装 elasticsearch 的,returns:
Warning: elasticsearch-1.3.4 already installed
我的 elasticsearch installation/database 是否可能已损坏?如果是这样,刷新它的最佳方法是什么?
根据 https://www.elastic.co/guide/en/elasticsearch/reference/1.4/indices-delete-index.html 我尝试了 curl -XDELETE 'http://localhost:9200/_all'
但这并没有解决错误。
当我将此代码部署到 AWS 时,我的 Mac 和 Elastic Beanstalk 都出现了这个问题(两者之前都正常工作)。
通常经过几个小时的努力,我在发布问题后几分钟就找到了答案...
根据https://github.com/ankane/searchkick/issues/382,我添加了一个初始值设定项:
Searchkick.client = Elasticsearch::Client.new(hosts: ["localhost:9200"], retry_on_failure: true, transport_options: {request: {timeout: 250}})
这似乎解决了问题。如果它再次发生,我会报告。
在config/initializers/elasticsearch.rb
中添加以下代码行Searchkick.client = Elasticsearch::Client.new(hosts: ["localhost:9200"], retry_on_failure: true, transport_options: {request: {timeout: 250}})
可以根据Rails环境指定。
对我来说,问题出在 URL 中缺少端口。 (我在本地主机上使用 AWS elasticsearch 而不是 运行。)
我变了
ENV['ELASTICSEARCH_URL'] = Rails.application.credentials.dig(:elasticsearch, :url)
至
ENV['ELASTICSEARCH_URL'] = Rails.application.credentials.dig(:elasticsearch, :url) + ':443'
这不会影响我的所有项目,所以我猜这与较新的版本有关。