gpt4 book ai didi

ruby-on-rails - 如何在rails中使用elasticsearch

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:09 24 4
gpt4 key购买 nike

我是 Elasticsearch 的新手。我在我的系统中安装了 Elasticsearch 。在 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"
}

我在我的 gem 文件中包含了这两个 gem。

gem 'tire'
gem 'elasticsearch'

我有一个电影模型和一个名为 search_controller 的 Controller 。

电影.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

电影模型的迁移

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

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

路线.rb资源:搜索 根“搜索索引”

我知道我应该为我的记录编制索引以便在 Elasticsearch 中使用它,但不知道如何以及在何处保存这些文件,以及如何使用它们。当我尝试搜索时显示错误

404 : {"error":"IndexMissingException[[movies] missing]","status":404}

最佳答案

当我将 elasticsearch 添加到我的 Rails 应用程序时,我使用了 searchkick:

https://github.com/ankane/searchkick

它真的是用户友好且设置快速。您可以使用 rake searchkick:reindex:all 命令来索引所有数据。

关于ruby-on-rails - 如何在rails中使用elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21282004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com