Nam*_*ion 2 ruby ruby-on-rails elasticsearch tire
我是弹性搜索的新手.我在我的系统中安装了弹性搜索.在localhost:9200它正在显示
{
"ok" : true,
"status" : 200,
"name" : "Unseen",
"version" : {
"number" : "0.90.10",
"build_hash" : "0a5781f44876e8d1c30b6360628d59cb2a7a2bbb",
"build_timestamp" : "2014-01-10T10:18:37Z",
"build_snapshot" : false,
"lucene_version" : "4.6"
},
"tagline" : "You Know, for Search"
}
Run Code Online (Sandbox Code Playgroud)
我在我的宝石文件中包含了这两个宝石.
gem 'tire'
gem 'elasticsearch'
Run Code Online (Sandbox Code Playgroud)
我有一个电影模型和一个名为search_controller的控制器.
movie.rb
class Movie < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :title
end
def self.search(params)
binding.pry
tire.search(load: true, page: 1, per_page: 10) do
query { string params[:query]} if params[:query].present?
end
Run Code Online (Sandbox Code Playgroud)
迁移电影模型
class CreateMovies < ActiveRecord::Migration
def self.up
create_table :movies do |t|
t.string :title
t.timestamps
end
def self.down
drop_table movies
end
end
end
Run Code Online (Sandbox Code Playgroud)
search_controller
class SearchController < ApplicationController
def index
if(params[:query]).present?
@results=Movie.search(params)
else
@results=[]
end
end
end
view/search/index
<h1>Search#index</h1>
<p>Find me in app/views/search/index.html.erb</p>
<%= form_tag search_index_path, method: :get do %>
<p>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>
<% if @results %>
<% @results.each do |fetchresults| %>
<%= fetchresults.title %>
<%= fetchresults.year %><br/>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
routes.rb资源:搜索root'search #index'
我知道我应该将我的记录编入索引以在弹性搜索中使用它,但不知道如何以及在何处保存这些文件以及如何使用它们.当我试图搜索它显示错误
404 : {"error":"IndexMissingException[[movies] missing]","status":404}
Run Code Online (Sandbox Code Playgroud)
当我将elasticsearch添加到我的rails应用程序时,我使用了searchkick:
https://github.com/ankane/searchkick
它真的是用户友好和快速设置.您可以使用rake searchkick:reindex:all命令索引所有数据.
| 归档时间: |
|
| 查看次数: |
3114 次 |
| 最近记录: |