12/08/2018, 14:08

ELASTICSEARCH TRONG RAILS VỚI GEM "SEARCHKICK"

I. Cài đặt Elasticsearch Đối với Ubuntu sudo apt-get update sudo apt-get install elasticsearch start và restart lại server ES bằng lệnh sudo service elasticsearch start sudo service elasticsearch restart Đối với Mac brew install elasticsearch start và restart lại server ES bằng ...

I. Cài đặt Elasticsearch

Đối với Ubuntu

sudo apt-get update
sudo apt-get install elasticsearch

start và restart lại server ES bằng lệnh

sudo service elasticsearch start
sudo service elasticsearch restart

Đối với Mac

brew install elasticsearch

start và restart lại server ES bằng lệnh

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist

II. Cài đặt gem searchkick

Thêm searchkick vào gem file

gem "searchkick"

cài đặt gem:

bundle íntall

III. Tích hợp Elastichsearch với ứng dụng rails

Giả sử bạn đã có 1 ứng dụng rails cùng với model Movie. Trong model này chúng ta sẽ thêm modul searchkick vào:

class Movie < ActiveRecord::Base
    searchkich
end

Để index dữ liệu của Product lên server ES ta dùng lệnh:

Movie.reindex

Hoặc đối với win Mac:

rake searchkick:reindex CLASS=Movie

gọi hàm search từ controller.

movies_controller.rb

class MoviesController < ApplicationController
  def search
    if params[:search].present?
      @movies = Movie.search params[:search]
    else
      @movies = Movie.all
    end
  end
end

Sửa file routes config/routes.rb

resources :movies do
  collection do
    get 'search'
  end
end

form search trong view

<%= form_tag search_movies_path, method: :get, class: "navbar-form navbar-right", role: "search" do %>
  <p>
    <%= text_field_tag :search, params[:search], class: "form-control" %>
    <%= submit_tag "Search", name: nil, class: "btn btn-default" %>
  </p>
<% end %>

VI.

0