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

はい、curl を使用せずにインデックスを手動で削除する場合。Rest-Client を呼び出してインデックスを削除できます。例えば。

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