Q&A
前提
ruby 3.1.2 rails 7.0.3
railsからelastic serachを使ってみたく以下を参考にgem を入れました。
elastisearch-railsを使ってRailsでElasticsearchを動かす【初心者向け】
rails コンソールからインデックスの作成コマンドを入力したところエラーになり、そこから進められずにいます。
基本的な質問で恐縮ですが、gemのインストールだけでなく、elasticsearch本体のインストールも必要なのでしょうか?あるいは別の原因でしょうか?
エラーの原因分かる方教えて下さい。
発生している問題・エラーメッセージ
rb(main):001:0> Article.__elasticsearch__.create_index! force:true /Users/pero/.rbenv/versions/3.1.2/lib/ruby/3.1.0/socket.rb:1214:in `__connect_nonblock': Failed to open TCP connection to localhost:9200 (Connection refused - connect(2) for 127.0.0.1:9200) (Faraday::ConnectionFailed) /Users/pero/.rbenv/versions/3.1.2/lib/ruby/3.1.0/socket.rb:1214:in `__connect_nonblock': Failed to open TCP connection to localhost:9200 (Connection refused - connect(2) for 127.0.0.1:9200) (Errno::ECONNREFUSED) /Users/pero/.rbenv/versions/3.1.2/lib/ruby/3.1.0/socket.rb:1214:in `__connect_nonblock': Connection refused - connect(2) for 127.0.0.1:9200 (Errno::ECONNREFUSED)
該当のソースコード
/app/models/article.rb
ruby
1require 'elasticsearch/model' 2 3class Article < ActiveRecord::Base 4 include Elasticsearch::Model 5 include Searchable 6end 7
/app/models/concerns/searchable.rb
ruby
1module Searchable 2 extend ActiveSupport::Concern 3 4 included do 5 include Elasticsearch::Model 6 7 mapping do 8 # ... 9 end 10 11 def self.search(query) 12 # ... 13 14 puts "test" 15 end 16 end 17end
/Gemfile
ruby
1gem 'elasticsearch-model' 2gem 'elasticsearch-rails'
試したこと
値を返せてませんが、railsとelastic search共に検索してみました。
irb(main):005:0> Article.all Article Load (0.2ms) SELECT "articles".* FROM "articles" => [#<Article:0x000000010a901ce8 id: 1, title: "Quick brown fox", body: nil, created_at: Wed, 25 Jan 2023 07:44:40.563667000 UTC +00:00, updated_at: Wed, 25 Jan 2023 07:44:40.563667000 UTC +00:00>, #<Article:0x000000010a9215e8 id: 2, title: "Fast black dogs", body: nil, created_at: Wed, 25 Jan 2023 07:44:48.009504000 UTC +00:00, updated_at: Wed, 25 Jan 2023 07:44:48.009504000 UTC +00:00>, #<Article:0x000000010a921520 id: 3, title: "Swift green frogs", body: nil, created_at: Wed, 25 Jan 2023 07:44:52.745768000 UTC +00:00, updated_at: Wed, 25 Jan 2023 07:44:52.745768000 UTC +00:00>] irb(main):006:0>
railsで検索
irb(main):003:0> res = Article.search 'fox' hogehoge => nil
elastic searchで検索
irb(main):004:0> Article.__elasticsearch__.search 'fox' => #<Elasticsearch::Model::Response::Response:0x000000010a737d18 @klass=[PROXY] Article (call 'Article.connection' to establish a connection), @search= #<Elasticsearch::Model::Searching::SearchRequest:0x000000010a73c070 @definition={:index=>"articles", :type=>nil, :q=>"fox"}, @klass=[PROXY] Article (call 'Article.connection' to establish a connection), @options={}>> irb(main):005:0>
elastic searchが起動していない?
gemの追加だけでなく、elasticsearch本体のインストールも必要なのでしょうか?
% curl http://localhost:9200 curl: (7) Failed to connect to localhost port 9200 after 7 ms: Connection refused % elasticsearch -V zsh: command not found: elasticsearch
エラーメッセージによると
/etc/elasticsearch/elasticsearch.yml
が必要とのことでした。
自分の環境ではなかったので作成しましたがエラーメッセージ変化なしでした。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。