2013-06-05 2 views
0

그래서, 내가 기금 모금 행사라는 클래스가 있습니다타이어 여과가 작동하지 않습니까?

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 

나는 그것으로 캐 내려고하고이 변수 내가 더 높은 ID를 가진 두 모금을하더라도 어떤 결과

[1] pry()> search 
=> #<Tire::Search::Search:0x007fb3d9d13938 
@filters=[{:range=>{:id=>{:gt=>1}}}], 
@indices=["fundraisers"], 
@options={}, 
@path="/fundraisers/_search", 
@types=[]> 

를 얻을 수 없다 "검색"보기 "1"보다

[2] pry()> Fundraiser.all.map(&:id) 
=> [1, 2, 3] 

내가 뭘 잘못하고 있니? 나는 생각할 수있는 모든면에서 이것을 다시 썼다. 또한 주목할 점은 비슷한 필터를 "created_at"라고하면 gt/lt 타임 스탬프이므로 결과가 없습니다.

업데이트 : 당신은 검색을 만든

=> #<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

내가 알 수있는 것부터 직접적인 "매핑"자체는 없으며, 타이어가 모든 것을 색인화한다고 가정하고 있습니까? 필터 측면없이 검색 결과를 얻고 있으므로 파고 들지 않았습니다. –

+0

ID가 2 인 항목이 명확하게 색인되어 있습니까? localhost : 9200/fundraisers/fundraiser/1은 id가 1 인 항목에 대한 elastic search 검색 결과를 표시해야합니다 (탄성 검색 유형이 기금 모금 인 경우). 당신은 또한지도를 확인하고 싶을지도 모르다 elasticsearch는 유추했다 –

답변

0

내가 검색 호출의 queryresults 부분을 추가했고 난 아직 결과를받지 못했습니다

...하지만 당신의 천국 't은 또한

난 당신이 그냥

경우에도 쿼리를 정의해야합니다 확신 (그것을 .results를 호출하여)을 실행
search.query { all } 

최상위 수준에서 필터를 추가해도 작동하지만 필터링 된 쿼리를 사용하는 것이 좋습니다.

+0

당신의 도움을위한 감사합니다 Frederick - 나는 갱신을 가진 본래 포스트를 편집했다. –