URI::InvalidURIError: схема http не принимает часть реестра: :9200 (или неправильное имя хоста?)

Я использую Elasticsearch/SearchKick/Bonsai для настройки поиска на Heroku. Это прекрасно работает локально, но у меня проблемы с индексацией моих объектов на Heroku.

в config/initializers/bonsai.rb

require 'elasticsearch/model'

if ENV['BONSAI_URL']
  Elasticsearch::Model.client = Elasticsearch::Client.new({url: ENV['BONSAI_URL'], logs: true})
end

в lib/tasks/elasticsearch.rb

require 'elasticsearch/rails/tasks/import'

в user.rb

  include Elasticsearch::Model
  include Elasticsearch::Model::Callbacks
  searchkick

  def search_data
    attributes.merge(
      profile_name: profile.name(&:name),
      book_title: books.map(&:title)
    )
  end

гемфайл

    gem 'bonsai-elasticsearch-rails' #in the production group
gem 'elasticsearch-model'
gem 'elasticsearch-rails'
gem "searchkick"

Я запустил: heroku config:add BONSAI_URL=mybonsaiurl

Но когда я пытаюсь выполнить переиндексацию с помощью: heroku run rake searchkick:reindex CLASS=User, я получаю: URI::InvalidURIError: схема http не принимает часть реестра: :9200 (или неправильное имя хоста?)

Или когда я это сделаю: User.elasticsearch.create_index! force: true Я получаю: User.elasticsearch.create_index!: команда не найдена

Кажется, что SearchKick или что-то еще установлено на 9200 по умолчанию, но я не уверен, как его изменить и должен ли он искать URL-адрес моего приложения или URL-адрес бонсай - я действительно потерялся и, кажется, где-то пропустил шаг?

Спасибо за любую помощь!


person Dani Fankhauser    schedule 28.11.2014    source источник


Ответы (1)


Решено благодаря службе поддержки Heroku.

Я пытался использовать два разных клиента — официальный клиент Elasticsearch rails и Searchkick. Я удалил всю конфигурацию для 3 камней Elasticsearch/Bonsai и отредактировал этот файл:

config/initializers/bonsai.rb
if ENV['BONSAI_URL']
# Elasticsearch::Model.client = Elasticsearch::Client.new({url: ENV['BONSAI_URL'], logs: true})
Searchkick.client = Elasticsearch::Client.new({url: ENV[‘BONSAI_URL’], logs: true})
end

Теперь я могу запустить: heroku run rake searchkick:reindex:all, чтобы проиндексировать мои модели.

Подробнее здесь: http://danifankhauser.com/post/104137889438/rails-how-to-index-searchkick-on-heroku-with

person Dani Fankhauser    schedule 02.12.2014