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 %>