6

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

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

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

有任何想法吗?

4

2 回答 2

10

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

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

或更一般地说:

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

(我认为这相当于remove @user在幕后做什么)

参考

于 2013-09-05T11:37:28.410 回答
6

事实证明,您可以像这样从索引中手动删除软删除的对象:

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

而已!

于 2012-10-09T14:55:34.140 回答