【发布时间】:2013-12-27 15:58:19
【问题描述】:
我正在尝试从 Elasticsearch 结果中过滤掉所有已删除的记录(使用偏执 gem https://github.com/goncalossilva/acts_as_paranoid)。
acts_as_paranoid 是软删除,这个 gem 将覆盖我们模型的destroy 方法,它在我们的模型中添加了一个列名deleted_at (datetime),如果这条记录没有被删除,则设置为零。
而在 Elasticsearch 中,我想过滤掉(所有删除的记录都不应该出现在
搜索结果),但我仍然得到它们。
这是我在 elasticsearch 中的代码:
tire.search(load: true, page: params[:page], per_page: per_page) do
query do
boolean do
must { term: {"deleted_at": nil} }
end
filter :range, created_at: {gte: params[:created_after]} if params[:created_after]
filter :term, city: CITIES[params[:city]] unless CITIES[params[:city]].blank?
sort do
by :created_at, "desc"
end
end
end
我也曾尝试将filter :missing, field: :deleted_at
但它不能正常工作。 请告诉我我的错误是什么,我该如何解决?这让我抓狂@@
【问题讨论】:
-
字段deleted_at是否在elasticsearch中被索引?
-
是的,我使用
date类型作为deleted_at。好吗?
标签: ruby-on-rails ruby elasticsearch