Searchkick手动删除特定记录索引

时间:2015-02-24 11:35:56

标签: ruby-on-rails ruby-on-rails-4 elasticsearch searchkick

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

 product = Product.find 10
 product.reindex

4 个答案:

答案 0 :(得分:16)

从索引中删除:

product = Product.find 10
Product.searchkick_index.remove(product)

答案 1 :(得分:15)

如果有人正在寻找如何删除&吹走整个指数以开始新鲜你可以这样做:

MyModel.searchkick_index.delete &&  MyModel.searchkick_index.create

答案 2 :(得分:3)

给定product = Product.find(10)

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

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

答案 3 :(得分: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