From 1bbed09a4b34da6163e5df07f1b03c1479a69322 Mon Sep 17 00:00:00 2001 From: "Marcos G. Zimmermann" Date: Fri, 28 Jun 2024 18:24:38 -0300 Subject: [PATCH] only delete existing index when the alias name is a real index --- lib/esse/index/indices.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/esse/index/indices.rb b/lib/esse/index/indices.rb index 041be98..e82abaf 100644 --- a/lib/esse/index/indices.rb +++ b/lib/esse/index/indices.rb @@ -50,9 +50,14 @@ def create_index(suffix: nil, body: nil, **options) # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html def reset_index(suffix: index_suffix, optimize: true, import: true, reindex: false, **options) cluster.throw_error_when_readonly! - existing = [] - suffix ||= Esse.timestamp - suffix = Esse.timestamp while index_exist?(suffix: suffix).tap { |exist| existing << suffix if exist } + + remove_root_in_use_index_named = nil + if index_name == index_name(suffix: suffix) && index_exist?(suffix: suffix) + remove_root_in_use_index_named = index_name + suffix = Esse.timestamp + elsif suffix.nil? || index_exist?(suffix: suffix) + suffix = Esse.timestamp + end if optimize definition = [settings_hash, mappings_hash].reduce(&:merge) @@ -73,11 +78,15 @@ def reset_index(suffix: index_suffix, optimize: true, import: true, reindex: fal elsif reindex && (_from = indices_pointing_to_alias).any? # @TODO: Reindex using the reindex API end + if optimize && number_of_replicas != new_number_of_replicas || refresh_interval != new_refresh_interval update_settings(suffix: suffix) end + + cluster.api.delete_index(index: remove_root_in_use_index_named) if remove_root_in_use_index_named + update_aliases(suffix: suffix) - existing.each { |s| delete_index!(**options, suffix: s) } + true end