Skip to content

Instantly share code, notes, and snippets.

@bbonamin
Forked from jarosan/elasticsearch.rake
Created August 14, 2012 18:20
Show Gist options
  • Save bbonamin/3351439 to your computer and use it in GitHub Desktop.
Save bbonamin/3351439 to your computer and use it in GitHub Desktop.

Revisions

  1. @invalid-email-address Anonymous created this gist Jul 16, 2012.
    40 changes: 40 additions & 0 deletions elasticsearch.rake
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    # Run with: rake environment elasticsearch:reindex

    namespace :elasticsearch do
    desc "re-index elasticsearch"
    task :reindex => :environment do

    klass = Place
    ENV['CLASS'] = klass.name
    ENV['INDEX'] = new_index = klass.tire.index.name << '_' << Time.now.strftime('%Y%m%d%H%M%S')

    Rake::Task["tire:import"].invoke

    puts '[IMPORT] about to swap index'
    if a = Tire::Alias.find(klass.tire.index.name)
    puts "[IMPORT] aliases found: #{Tire::Alias.find(klass.tire.index.name).indices.to_ary.join(',')}. deleting."
    old_indices = Tire::Alias.find(klass.tire.index.name).indices
    old_indices.each do |index|
    a.indices.delete index
    end

    a.indices.add new_index
    a.save

    old_indices.each do |index|
    puts "[IMPORT] deleting index: #{index}"
    i = Tire::Index.new(index)
    i.delete if i.exists?
    end
    else
    puts "[IMPORT] no aliases found. deleting index. creating new one and setting up alias."
    klass.tire.index.delete
    a = Tire::Alias.new
    a.name(klass.tire.index.name)
    a.index(new_index)
    a.save
    end

    puts "[IMPORT] done. Index: '#{new_index}' created."
    end
    end