轮胎没有"命中"在Heroku上使用Bonsai弹性搜索

时间:2013-10-19 22:07:47

标签: ruby-on-rails heroku elasticsearch tire bonsai-elasticsearch

本地,轮胎和弹性研究工作。然而,轮胎在Heroku上似乎与盆景不太合作。

索引构建正确,但是,Tire没有使用搜索方法访问索引。当我检查在我的模型(页面)上调用的搜索方法时,我得到以下内容:

#<Tire::Results::Collection:0x0000000659ab90 @response={"took"=>2, "timed_out"=>false, "_shards"=>{"total"=>1, "successful"=>1, "failed"=>0}, "hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}}, @options={:load=>true, :size=>100}, @time=2, @total=0, @facets=nil, @max_score=0.0, @wrapper=Tire::Results::Item>

你可以看到,Tire没有击中索引,几乎就像它在路上迷路一样......“命中”键返回一个空数组。

我可以确认索引存在,并且已经正确构建。我能够用卷曲击中它,并成功返回搜索结果。例如:

curl -XGET 'http://my-url.bonsai.io/sampleapp-production/page/1'

这将返回“sampleapp-production”索引中的页面对象,ID为“1”。完美。

然而,我的rails app使用轮胎没有运气。

以下是我的控制器操作:

def browse
  @user = current_user
  if params[:category]
    @category = Category.find(params[:category])
    @pages = @category.pages
  else
  @pages = Page.search(params)
  end
  respond_to do |format|
    format.js
    format.html
  end
end

以下是我的模特(页面):

include Tire::Model::Search
include Tire::Model::Callbacks
index_name BONSAI_INDEX_NAME

def self.search(params)
  tire.search(load: true, page: params[:page], per_page: 100) do
    query { string params[:query], default_operator: "AND" } if params[:query].present? 
    sort { by :created_at, "desc" } if params[:query].blank?
    filter :term, :visibility => ['public']
  end
end

def to_indexed_json
  to_json(:include => [:user])
end

以下是我的初始化程序:

ENV['ELASTICSEARCH_URL'] = ENV['BONSAI_URL']

# Optional, but recommended: use a single index per application per environment
app_name = Rails.application.class.parent_name.underscore.dasherize
app_env = Rails.env
BONSAI_INDEX_NAME = "#{app_name}-#{app_env}"  

我喜欢这里的任何帮助。

0 个答案:

没有答案