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 đặ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
    Nguồn: Viblo


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới LaptrinhX, vui lòng đợi một lúc để chúng tôi thử kết nối lại.