Searchkick手动删除特定记录索引

kas*_*hif 9 ruby-on-rails elasticsearch ruby-on-rails-4 searchkick

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

 product = Product.find 10
 product.reindex
Run Code Online (Sandbox Code Playgroud)

Rod*_*igo 17

要从索引中删除:

product = Product.find 10
Product.searchkick_index.remove(product)
Run Code Online (Sandbox Code Playgroud)


Nat*_*ram 16

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

MyModel.searchkick_index.delete &&  MyModel.searchkick_index.create
Run Code Online (Sandbox Code Playgroud)


XML*_*yer 5

给定product = Product.find(10)

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

如果您需要手动删除记录,这Product.searchkick_index.remove(product)是要走的路。


foo*_*mip 5

如果你只有被删除模型的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)
Run Code Online (Sandbox Code Playgroud)

哈克但有效:P