使用Tire删除/删除ElasticSearch中的索引文档(通过ActsAsParanoid进行软删除)

时间:2012-10-09 14:28:04

标签: elasticsearch tire

我运行的ElasticSearch服务器使用优秀的Tire gem索引和搜索文档。一切都很好,除了我不确定如何手动从搜索索引中删除文档。

我已经倾倒了RDoc并搜索了几个小时,但这是我能找到https://github.com/karmi/tire/issues/309解决方案的唯一暗示。除了在curl周围构建自定义包装器并手动发出请求之外,还有更简单的方法吗?

另一个问题是我使用了名为ActsAsParanoid的软删除gem,因此Tire :: Model :: Callbacks不会删除软删除对象。

有什么想法吗?

2 个答案:

答案 0 :(得分:10)

如果您只有ID(例如12345):

User.tire.index.remove 'user', '12345'

或更一般地说:

klass.tire.index.remove klass.document_type, record_id

(我认为这相当于remove @user将在幕后做的事情)

reference

答案 1 :(得分:6)

原来你可以手动从索引中删除软删除的对象,如下所示:

@user = User.find(id) #or whatever your indexed object is
User.tire.index.remove @user #this will remove them from the index

多数民众赞成!