3

我一直在使用带有 elasticsearch 的searchkick gem,在 Rails 4.2.0 应用程序上没有问题。我有一个使用 searchkick 的视频模型。

由于某种原因rake searchkick:reindex:all,现在一直失败:

重新索引视频... rake 中止!Faraday::ConnectionFailed: 执行过期

我最初通过 安装了 elasticsearch brew install elasticsearch,它返回:

警告:elasticsearch-1.3.4 已经安装

我的弹性搜索安装/数据库是否可能已损坏?如果是这样,刷新它的最佳方法是什么?

根据https://www.elastic.co/guide/en/elasticsearch/reference/1.4/indices-delete-index.html我试过curl -XDELETE 'http://localhost:9200/_all'了,但这并不能解决错误。

当我将此代码部署到 AWS 时,我的 Mac 以及 Elastic Beanstalk 上都会出现此问题(两者之前都可以正常工作)。

4

3 回答 3

10

通常经过数小时的挣扎后,我在发布问题后的几分钟内找到了答案......

根据https://github.com/ankane/searchkick/issues/382我添加了一个初始化程序:

Searchkick.client = Elasticsearch::Client.new(hosts: ["localhost:9200"], retry_on_failure: true, transport_options: {request: {timeout: 250}})

这似乎解决了这个问题。如果再次发生,我会报告。

于 2015-11-06T12:06:14.120 回答
1

在 config/initializers/elasticsearch.rb 中添加以下代码行

Searchkick.client = Elasticsearch::Client.new(hosts: ["localhost:9200"], retry_on_failure: true, transport_options: {request: {timeout: 250}})

您可以根据 Rails 环境指定此项。

于 2018-05-21T11:07:14.783 回答
0

对我来说,问题在于 URL 中缺少端口。(我正在使用 AWS elasticsearch,而不是在 localhost 上运行它。)

我变了

ENV['ELASTICSEARCH_URL'] = Rails.application.credentials.dig(:elasticsearch, :url)

ENV['ELASTICSEARCH_URL'] = Rails.application.credentials.dig(:elasticsearch, :url) + ':443'

这不会影响我所有的项目,所以我猜这与更新版本有关。

于 2020-12-21T07:12:19.210 回答