所以,我有一个叫做筹款人的课程:
class Fundraiser
def search!
search = Tire::Search::Search.new('fundraisers')
search.query { all }
search.filter :range, {id: {gt: 1}}
search.results
binding.pry
end
end
当我撬开它并查看“搜索”变量时,我没有得到任何结果
[1] pry()> search
=> #<Tire::Search::Search:0x007fb3d9d13938
@filters=[{:range=>{:id=>{:gt=>1}}}],
@indices=["fundraisers"],
@options={},
@path="/fundraisers/_search",
@types=[]>
即使我有两个ID高于“1”的筹款人
[2] pry()> Fundraiser.all.map(&:id)
=> [1, 2, 3]
我做错了什么?我已经用我能想到的每一种方式重写了这一点。另外值得注意的是,如果我做了类似的过滤器,那么“created_at”是gt / lt时间戳我得不到任何结果。
更新
我添加了搜索调用的query
和results
部分,但我还没有得到结果......
=> #<Tire::Results::Collection:0x007f92f3302b58
@facets=nil,
@max_score=0.0,
@options={},
@response=
{"took"=>0,
"timed_out"=>false,
"_shards"=>{"total"=>5, "successful"=>5, "failed"=>0},
"hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}},
@time=0,
@total=0,
@wrapper=Tire::Results::Item>
答案 0 :(得分:0)
您已创建搜索但尚未执行(通过调用.results
)
此外,我很确定你必须定义一个查询,即使它只是
search.query { all }
您可能还希望考虑使用过滤后的查询,但在顶层添加过滤器也可以使用。