2013-04-29 75 views
0

我想通過'status_id'來過濾我的輪胎搜索結果。我不想顯示的結果與2.按狀態過濾輪胎結果

這裏STATUS_ID'是我當前的搜索代碼:

filter :terms, status_id: '1' 
filter :string, status_id: '1' 
filter :integer, status_id: '1' 

但他們沒有工作:

query = params[:query] 
page = params[:page] || 1 
per_page = params[:per_page] || 5 
offset = page.to_i - 1 < 0 ? 0 : (page.to_i - 1) * per_page 

@results = Tire.search INDEX_NAME do 
    query { string query } 
    from offset 
    size per_page 
end 

我已經嘗試使用。不過,理想情況下,我想要獲得所有不是'2'的內容,而不僅僅是選擇'1'的結果。

status_id正在由elasticsearch在json中正確返回。

任何幫助將是偉大的。

謝謝。

+0

我也試過使用'不'過濾器,但我仍然無法讓它工作:http://www.elasticsearch.org/guide/reference/query-dsl/not-filter/ – anthony 2013-04-29 17:00:45

回答

1
filter :term, :status_id => 1 

應該工作。術語過濾器期望一系列可能的術語,這就是爲什麼你的嘗試沒有奏效。

如果您想使用不過濾,像

filter :not, {:term => {:status_id => 2}} 

應該工作。

+0

正確。另外,查看過濾後的查詢:https://github.com/karmi/tire/blob/master/test/integration/filtered_queries_test.rb,它應該比頂級過濾器執行得更好。 – karmi 2013-04-30 09:21:21