Search code examples
ruby-on-railselasticsearchsearchkickcloud9

how to set different port for searchkick gem?


I have run elasticsearch on port 8081 in cloud9.

/workspace/elasticsearch-6.1.1/bin $ ./elasticsearch -E http.port=8081

I then add 'searchkick' gem in gemfile and then bundle install

I then add searchkick in model as

class Book < ActiveRecord::Base
    searchkick
end

Then i run the command

Book.reindex

I get the following error

2.3.4 :001 > Book.reindex
Faraday::ConnectionFailed: Failed to open TCP connection to localhost:9200 (Connection refused - connect(2) for "localhost" port 9200)
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/net/http.rb:882:in `rescue in block in connect'
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/net/http.rb:879:in `block in connect'
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/timeout.rb:91:in `block in timeout'
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/timeout.rb:101:in `timeout'
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/net/http.rb:878:in `connect'
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/net/http.rb:852:in `start'

It makes sense because it is assuming the elastic search server is running on the default 9200 but i ran it on 8081. How do i tell searchkick gem to connect to 8081 port instead of 9200? I appreciate any help! Thanks!


Solution

  • Create an initializer config/initializers/elasticsearch.rb:

    ENV['ELASTICSEARCH_URL'] = 'http://localhost:8081'
    

    More in official doc