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 

的Gemfile

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

我跑了:heroku配置:添加BONSAI_URL = mybonsaiurl

但是,当我尝试重新索引:heroku运行rake searchkick:reindex CLASS =用户我得到:URI :: InvalidURIError:方案http不接受注册表部分:: 9200(或错误的主机名?)

或者当我这样做时:用户。 elasticsearch .create_index! force:true我得到:用户。 elasticsearch .create_index!:找不到命令

似乎SearchKick或其他东西默认设置为9200,但我不知道如何更改它或者是否应该查找我的应用程序URL或盆景URL – 我真的迷路了,似乎错过了某个地方的一步?

谢谢你的帮助!

感谢Heroku支持团队。

我试图使用两个不同的客户端 – 官方Elasticsearch rails客户端和Searchkick。 我通过并删除了3个Elasticsearch / Bonsaigem的所有配置,并编辑了这个文件:

 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运行rake searchkick:reindex:all来索引我的模型。

更多信息: http : //danifankhauser.com/post/104137889438/rails-how-to-index-searchkick-on-heroku-with

Interesting Posts