ELASTICSEARCH TRONG RAILS VỚI GEM "SEARCHKICK"
Bài đăng này đã không được cập nhật trong 8 năm
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. Tài liệu tham khảo và source code
http://www.rubysg.com/tag/elasticsearch/
bài viết còn rất nhiều thiết sót như một số thuộc tính khác của searchkick còn chưa đề cập tới... mình sẽ bổ sung trong các bài viết tới. cảm ơn các bạn đã đọc bài!
All rights reserved