12

如何使用 Searchkick 手动删除特定记录索引。有重新索引特定记录的选项,但我没有找到删除记录索引的任何选项。

 product = Product.find 10
 product.reindex
4

4 回答 4

23

如果有人正在寻找如何删除和删除整个索引以重新开始,您可以这样做:

MyModel.searchkick_index.delete &&  MyModel.searchkick_index.create
于 2015-07-27T21:00:08.543 回答
21

从索引中删除:

product = Product.find 10
Product.searchkick_index.remove(product)
于 2015-02-24T11:59:19.940 回答
5

给定product = Product.find(10)

如果product.should_index?返回false,将从索引中product.reindex 删除该记录。

但是,如果您需要手动删除记录,这Product.searchkick_index.remove(product)是可行的方法。

于 2015-10-30T19:36:19.127 回答
1

如果您只有已删除模型的 id 怎么办?例如。如果您在后台工作人员中接听电话?

查看源代码,searchkick 仅检查对象的类以计算索引并从对象中获取 id,因此您可以执行以下操作来绕过它:

# given value id holding the record id of the deleted model record (eg. Product with id 123)

prod = Product.new(id: id)

Product.searchkick_index.remove(prod)

哈克但有效:P

于 2020-07-29T09:32:16.510 回答