Searchkick с ElasticSearch возвращает Faraday::ConnectionFailed: срок выполнения истек

Я без проблем использовал гем searchkick с elasticsearch в приложении Rails 4.2.0. У меня есть одна модель видео, использующая searchkick.

По какой-то причине rake searchkick:reindex:all теперь постоянно терпит неудачу:

Переиндексация видео... грабли прерваны! Faraday::ConnectionFailed: срок выполнения истек

Первоначально я установил elasticsearch через brew install elasticsearch, который возвращает:

Предупреждение: elasticsearch-1.3.4 уже установлен

Возможно ли, что моя установка/база данных elasticsearch повреждена? Если да, то как лучше его обновить?

Согласно https://www.elastic.co/guide/en/elasticsearch/reference/1.4/indices-delete-index.html Я пробовал curl -XDELETE 'http://localhost:9200/_all', но это не устраняет ошибку.

Эта проблема возникает на моем Mac, а также на Elastic Beanstalk, когда я развертываю этот код на AWS (ранее оба работали правильно).


person Stephen Lead    schedule 06.11.2015    source источник


Ответы (3)


Обычно после нескольких часов борьбы я находил ответ через несколько минут после публикации вопроса...

В соответствии с https://github.com/ankane/searchkick/issues/382 я добавил инициализатор с:

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

который, кажется, решил проблему. Я отчитаюсь, если это повторится.

person Stephen Lead    schedule 06.11.2015

Добавьте следующие строки кода в config/initializers/elasticsearch.rb

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

Вы можете указать это в соответствии со средой Rails.

person Pooja Mane    schedule 21.05.2018
comment
спасибо - но я думаю, что это именно то, что я опубликовал в 2015 году? - person Stephen Lead; 21.05.2018

Для меня проблема заключалась в отсутствующем порте в URL-адресе. (Я использую эластичный поиск AWS и не запускаю его на локальном хосте.)

я изменил

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

to

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

Это не влияет на все мои проекты, поэтому я предполагаю, что это связано с более новой версией.

person Navid Khan    schedule 21.12.2020