为什么rails + elasticsearch没有命中

时间:2014-11-16 23:06:17

标签: ruby-on-rails database search elasticsearch

今天我开始阅读有关elasticsearch的内容,我正在尝试在我的ruby on rails应用程序中使用它。

所以我做了一些调整,就像我在例子中看到的那样:

https://raw.github.com/elasticsearch/elasticsearch-rails/master/elasticsearch-rails/lib/rails/templates/01-basic.rb

我的模特:

class Service < ActiveRecord::Base
  include Elasticsearch::Model
  include Elasticsearch::Model::Callbacks
end

我的控制器:

class ServicesController < ApplicationController
  (...)  
  # GET /services/search
  def search
    @services = Service.search(params[:q]).records
    render action: "index"
  end
  (...)
end

我的观点:

(...)
<%= form_tag search_services_path, method: 'get' do %>
<%= text_field_tag :q, params[:q] %>
<%= button_tag :search %>
<% end %>
(...)

我的路线:

Newapp::Application.routes.draw do
  (...)
  resources :services do
    collection { get :search }
  end
  (...)
end

但是当我找到任何东西时,我总会得到0(零)的结果。

其他人认为我试图这样做:

$ curl -XPOST 'localhost:9200/services/_search?pretty' -d '
 { "query": { "match_all": {} } }'

它返回:

{
  "took" : 2396,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

我需要做些什么来对弹性搜索通过我的rails模型查找保存在我的数据库中的数据

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

这篇文章足以解决我所有的疑虑。

http://www.sitepoint.com/full-text-search-rails-elasticsearch/

我的问题解决了:

require 'elasticsearch/model'

在我的模型的顶部,并添加:

Article.import # for auto sync model with elastic search

在我的模型的底部。