代码之家  ›  专栏  ›  技术社区  ›  kashif

Searchkick手动删除特定记录索引

  •  13
  • kashif  · 技术社区  · 11 年前

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

     product = Product.find 10
     product.reindex
    
    4 回复  |  直到 11 年前
        1
  •  24
  •   Nathan Bertram    11 年前

    如果有人在寻找如何删除&吹掉整个索引,重新开始,你可以这样做:

    MyModel.searchkick_index.delete &&  MyModel.searchkick_index.create
    
        2
  •  22
  •   Rodrigo    11 年前

    要从索引中删除:

    product = Product.find 10
    Product.searchkick_index.remove(product)
    
        3
  •  5
  •   XML Slayer    11 年前

    鉴于 product = Product.find(10) .

    如果 product.should_index? 回报 false , product.reindex 将删除 索引中的记录。

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

        4
  •  4
  •   foomip    6 年前

    如果您只有已删除模型的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)
    

    Hacky但有效:P