12/08/2018, 17:13

Cài đặt và sử dụng ElasticSearch trong Ruby On Rails

Mình có tìm hiểu và sử dụng nên hôm nay mình sẽ hướng dẫn các bạn cài đặt và sử dụng elasticsearch Đầu tiên mình sẽ tạo 1 project mới có tên test_elastic: rails new test_elastic tạo xong rồi đi đến project và chạy rails s nếu thành công vào link localhost:3000 sẽ có hình như dưới đây: 1. Cài ...

Mình có tìm hiểu và sử dụng nên hôm nay mình sẽ hướng dẫn các bạn cài đặt và sử dụng elasticsearch Đầu tiên mình sẽ tạo 1 project mới có tên test_elastic:

rails new test_elastic

tạo xong rồi đi đến project và chạy rails s nếu thành công vào link localhost:3000 sẽ có hình như dưới đây: 1. Cài đặt ElasticSearch

 sudo apt-get update
 sudo apt-get install elasticsearch

Sau đó các bạn chạy lệnh dưới đây để start và restart lại server ES

 sudo service elasticsearch start
 sudo service elasticsearch restart

2. Cài đặt gem searchkick

Thêm searchkick vào gem file

gem “searchkick”

Sau đó chạy:

bundle install

3. Tích hợp Elasticsearch với rails app

Tạo 1 rails app với model Company có trường name: string

rails generate scaffold Company name:string

Thêm module searchkick vào model Company models/company.rb

class Company < ActiveRecord::Base
  searchkick
end

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

Company.reindex

Gọi hàm search từ controller.

controllers/companies_controller.rb

class CompaniesController < ApplicationController
  def index
    if params[:query].present?
      Company.reindex
      @companies = Company.search params[:query]
    else
      @companies = Company.all
    end
  end
end

Thêm form search trong view

views/companies/index.html.erb

<div>
  <%= form_tag "/companies", method: :get, class: "form-inline" do %>
    <%= text_field_tag "query", params[:query], class: "form-control" %>
    <%= submit_tag "Search" %>
  <% end %>
</div>

sau đó tạo dữ liệu và test

Tóm lại: đây là kiến thức căn bản mình mình giới thiệu với các bạn, phần sau sẽ có những cái chuyên sâu hơn, cám ơn các bạn. Link github: https://github.com/ledinhdoan/test_elastic

0