2013-08-01 61 views
1

我試圖排除被刪除的對象.. deleted_at是一個日期時間字段,如果該對象被刪除它有一個時間戳,否則其零。Elasticsearch和輪胎排除deleted_at對象

這是我的代碼:

tire.search(load: true, page: params[:page], per_page: 2) do 
    query { string params[:query], default_operator: "AND" } if params[:query].present? 
    filter :missing, field: :deleted_at 
end 

但是這確實對我的輸出正好沒什麼..

任何提示?

回答

2

所以基本上有三種狀態字段/屬性可以是。

  1. 它不會在文件中存在。
  2. 它確實存在,並將其值設置爲null
  3. 它確實存在,並且該值如果我理解正確的話,你要的文檔,其中deleted_at處於狀態的東西有效(或非空)

1或2。我認爲你需要創建的這相當於:

"filter" : { 
    "missing" : { 
     "field" : "deleted_at", 
     "existence" : true, 
     "null_value" : true 
    } 
} 

內丟失的過濾器會發現這是在狀態1(existence: true)或狀態2(null_value: true)所有文檔。

祝你好運!

+0

感謝您的快速回復!我只想要不被刪除的對象,這意味着deleted_at IS NULL .. – Oliver

+0

糟糕,編輯的答案刪除'not'過濾器。 – ramseykhalaf

+0

很抱歉,遲到了。它沒有任何區別與這個過濾器或不..真的很奇怪。 deleted_at是在數據庫中的日期時間字段..我必須指定一些特殊的東西嗎? – Oliver