我在heroku上有一个生产应用程序,带有搜索框插件。
在我的控制器中我有:
# GET /venues
# GET /venues.json
def index
@supplier = Supplier.find(current_user.profileable_id)
@venues = @supplier.venues
end
在我的模特中:
include Tire::Model::Search
include Tire::Model::Callbacks
index_name("#{Rails.env}")
在我的生产环境中.rb:
# Elastic search - Searchbox
ENV['ELASTICSEARCH_URL'] = ENV['SEARCHBOX_URL']
根据文件,这应该是我所需要的。但是,插件不会自动创建索引或映射。没有这两个,heroku日志显示400错误,表明没有索引,它应该。如果我添加一个名为'production'的索引(基于上面的#{Rails.env}),那么它不会抛出任何错误,但是没有搜索结果。如果我然后要求Saerchbox对网站URL进行抓取,它会进行一些映射,但是不正确(我知道这是因为我们在heroku上的其他地方运行的应用程序的另一个实例,具有相同的设置并且它工作正常,即创建它是自己的索引和映射。)
我错过了什么?我是否需要一个我错过某处创建索引的heroku run命令?
答案 0 :(得分:0)
好的,解决了。我需要运行这个rake:
heroku run rake environment tire:import CLASS=Venue FORCE=true
在这种情况下,Venue是我正在编制索引的模型,因此在使用时将其替换为您的模型。
虽然轮胎会在开发过程中自动生成标记,但它不会生产,因此您必须使用耙子强制它。