Rails×Heroku×bonsai×Searchkick(Elasticsearch) 이용시의 각서

모델Product을 대상으로 Searchkick(Elasticsearch)에서 검색하는 경우

Gemfile.rb
gem 'elasticsearch', '7.2.0'
gem 'searchkick'

product.rb
class Product < ApplicationRecord
    searchkick language: "japanese"

    def search_data
        {
            keywords: keywords
        }
    end
end

home_controller.rb
class HomeController < ApplicationController
  def top
  end

  def search    
    @products = self.products_query
  end

  private
    def products_query
      if params[:q].present?
        Product.search params[:q], fields: [:keywords], body_options: {min_score: 1}, operator: "or"
      else
        Product.all.order(id: "desc")
      end
    end
end


Elasticsearch 도입



여기는 전회의 개발로 넣고 있었다.
htps : // m / m z k / ms / 0f722 d01c982 a 96 59
brew install elasticsearch 그냥 잘하지 못하고 Elasticsearch 공식 사이트의 절차를 보면서 넣은 것 같다.
htps //w w. 에 s c. 코/구이데/엔/에아 s 치c세아 rch/레후에렌세/7.10/b레w. HTML
$ which elasticsearch
-> usr/local/bin/elasticsearch #私の場合はこのディレクトリに入っていました

로컬로 개발할 때



Elasticsearch가 이미 포함되어 있으면 시작하고 색인 생성하면 검색 결과에 나옵니다.
# Elasticsearchを起動
$ elasticsearch

# 新規タブでkibanaを起動(任意)
$ kibana

# 新規タブでローカルサーバーを起動
$ rails s

# Rails Console でインデックスを生成
$ rails c
irb(main):001:0> Product.reindex # 検索対象となるモデル名がProductの場合

Production Heroku



Heroku에 Bonsai 애드온 추가



GUI에서 포치 포치하는 것만으로, 추가와 환경 변수 BONSAI_URL 의 설정이 자동적으로 된다. 그러나 환경 변수 ELASTICSEARCH_URL는 수동으로 동일한 값을 설정해야합니다.
$ heroku config:get BONSAI_URL -a myapp
-> http://username123:[email protected]:443

$ heroku config:add ELASTICSEARCH_URL='http://username123:[email protected]:443'
BONSAI_URL은 bonsai의 Credential 화면에서도 확인 가능.


bonsai 공식 문서에서는, URL 예가 xxx.bonsai.io/ 의 도메인이지만, 나의 것은 xxx.bonsaisearch.net:443 가 되어 있었다. 말미의 숫자까지 제대로 설정하도록.

인덱싱


$ heroku run rails searchkick:reindex CLASS=Product -a myapp # 対象モデルがProductの場合
# もしくは
$ heroku run rails searchkick:reindex:all -a myapp
rake 쪽에서 하면 Elasticsearch의 버전에 따라서는 잘 가지 않을지도 모른다 (Searchkick::ImportError가 나왔다).

참고



Searchkick
htps : // 기주 b. 코 m / 안카네 / 세아 rch ck

Heroku Bonsai Elasticsearch Document
htps : //에서 v 선 r. 헤로쿠. 코 m / r 치 c ぇ s / 혼사이

Searchkick의 README의 일본어 번역
htps : // 이 m / 켄토사사 /

좋은 웹페이지 즐겨찾기