2

如果这是我的模型是after_destroy() {tire.index.delete}使用回调删除索引(与数据库不同步)的正确方法吗?

如果不是,我如何以及在哪里可以在不使用 curl 的情况下手动删除索引?

class Tag < ActiveRecord::Base
  attr_accessible :name

  include Tire::Model::Search
  include Tire::Model::Callbacks

  after_destroy() {tire.index.delete}

  def self.search(params)
    tire.search(load: true) do
      query { string params[:query]} if params[:query].present?
    end
  end

end
4

2 回答 2

4

您可以在您的代码所在的位置启动 ruby​​ 控制台并在那里运行它。

基于模型的轮胎方法的索引名称采用模型名称的复数形式作为索引名称。例如:article.rb 将文章作为索引名称。

Tire.index("<index_name>").delete

在你的情况下,它会是

Tire.index("tags").delete

请注意,您还可以在索引名称中使用通配符

Tire.index("*articles").delete

将删除任何索引名称以“articles”结尾的索引

于 2013-09-02T07:29:31.807 回答
1

是的,如果您想在不卷曲的情况下手动删除索引。您可以调用 Rest-Client 来删除索引。例如。

    generated_url = "http://#{host_name}:9200/#{index_name}"   
    RestClient.delete(generated_url) { |response, request, result| response }
于 2013-09-02T06:11:02.320 回答