Ruby:ElasticSearch + Tire错误Tire :: Search :: SearchRequestFailed - IndexMissingException?

gab*_*iel 6 ruby ruby-on-rails mongodb elasticsearch tire

我想使用ElasticSearch + Tire来搜索存储在MongoDB中的内容.

但是,当我尝试执行搜索时,我收到以下错误:

SearchFtroller #index中的Tire :: Search :: SearchRequestFailed

404 : {"error":"IndexMissingException[[events] missing]","status":404}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这告诉我事件中缺少索引,即使我已经告诉它在我运行时生成它们db:setup.

模型:

class Event
  include Mongoid::Document
  include Mongoid::Timestamps 

  include Tire::Model::Search
  include Tire::Model::Callbacks

  field :name, :type => String
  field :description, :type => String
  field :started_at => Time
  field :ended_at => Time

  def to_indexed_json
    self.as_json
  end
end
Run Code Online (Sandbox Code Playgroud)

控制器:

  def search
    Event.tire.search(params[:q])
  end
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何想法吗?

BBJ*_*BJ3 12

......甚至更好,只需运行:

rake environment tire:import CLASS=Event FORCE=true
Run Code Online (Sandbox Code Playgroud)


And*_*nic 0

您是否为您的事件模型建立了索引?你的场地模型呢?Elasticsearch也在寻找Venues索引

我有一个 rake 任务来重新索引我的模型

desc “重建索引事件”
任务 :reindex_events => :environment do

batch_size = 1000
count = batch_size

Event.all.find_in_batches(:batch_size => batch_size) { |objects|

  puts "Count: " + count.to_s
  count += batch_size

  Event.index.import objects
}    
Run Code Online (Sandbox Code Playgroud)

结尾