Module: Escargot::AdminIndexVersions
- Defined in:
- lib/escargot/elasticsearch_ex.rb
Instance Method Summary collapse
-
#create_index_version(index, create_options) ⇒ Object
creates an index to store a new index version.
-
#current_index_version(index) ⇒ Object
returns the full index name of the current version for this index.
-
#deploy_index_version(index, new_version) ⇒ Object
“deploys” a new version as the current one.
-
#index_versions(index) ⇒ Object
lists all current, old, an in-progress versions for this index.
-
#prune_index_versions(index) ⇒ Object
deletes all index versions older than the current one.
Instance Method Details
#create_index_version(index, create_options) ⇒ Object
creates an index to store a new index version. Returns its name
6 7 8 9 10 |
# File 'lib/escargot/elasticsearch_ex.rb', line 6 def create_index_version(index, ) = "#{index}_#{Time.now.to_f}" $elastic_search_client.create_index(, ) return end |
#current_index_version(index) ⇒ Object
returns the full index name of the current version for this index
13 14 15 |
# File 'lib/escargot/elasticsearch_ex.rb', line 13 def current_index_version(index) $elastic_search_client.index_status(index)["indices"].keys.first rescue nil end |
#deploy_index_version(index, new_version) ⇒ Object
“deploys” a new version as the current one
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/escargot/elasticsearch_ex.rb', line 18 def deploy_index_version(index, new_version) $elastic_search_client.refresh(new_version) if current_version = current_index_version(index) $elastic_search_client.alias_index( :add => {new_version => index}, :remove => {current_version => index} ) else $elastic_search_client.alias_index(:add => {new_version => index}) end end |
#index_versions(index) ⇒ Object
lists all current, old, an in-progress versions for this index
41 42 43 |
# File 'lib/escargot/elasticsearch_ex.rb', line 41 def index_versions(index) $elastic_search_client.index_status()["indices"].keys.grep(/^#{index}_/) end |
#prune_index_versions(index) ⇒ Object
deletes all index versions older than the current one
31 32 33 34 35 36 37 38 |
# File 'lib/escargot/elasticsearch_ex.rb', line 31 def prune_index_versions(index) current_version = current_index_version(index) return unless current_version old_versions = index_versions(index).select{|version| (version) < (current_version)} old_versions.each do |version| $elastic_search_client.delete_index(version) end end |