From d7014419e208ca6d14324a77d795fc78a87109f5 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Wed, 8 Jul 2015 14:17:30 +0100 Subject: [PATCH] Use rebuilder to reset the index --- .../wagtailsearch/backends/elasticsearch.py | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/wagtail/wagtailsearch/backends/elasticsearch.py b/wagtail/wagtailsearch/backends/elasticsearch.py index f967a0c0a..134904d18 100644 --- a/wagtail/wagtailsearch/backends/elasticsearch.py +++ b/wagtail/wagtailsearch/backends/elasticsearch.py @@ -359,7 +359,7 @@ class ElasticSearchIndexRebuilder(object): self.es = es self.index_name = index_name - def start(self): + def reset_index(self): # Delete old index try: self.es.indices.delete(self.index_name) @@ -369,6 +369,10 @@ class ElasticSearchIndexRebuilder(object): # Create new index self.es.indices.create(self.index_name, INDEX_SETTINGS) + def start(self): + # Reset the index + self.reset_index() + def add_model(self, model): # Get mapping mapping = ElasticSearchMapping(model) @@ -410,6 +414,20 @@ class ElasticSearchAtomicIndexRebuilder(ElasticSearchIndexRebuilder): self.alias_name = alias_name self.index_name = alias_name + '_' + get_random_string(7).lower() + def reset_index(self): + # Delete old index using the alias + # This should delete both the alias and the index + try: + self.es.indices.delete(self.alias_name) + except NotFoundError: + pass + + # Create new index + self.es.indices.create(self.index_name, INDEX_SETTINGS) + + # Create a new alias + self.es.indices.put_alias(name=self.alias_name, index=self.index_name) + def start(self): # Create new index self.es.indices.create(self.index_name, INDEX_SETTINGS) @@ -493,14 +511,8 @@ class ElasticSearch(BaseSearch): return self.rebuilder_class(self.es, self.es_index) def reset_index(self): - # Delete old index - try: - self.es.indices.delete(self.es_index) - except NotFoundError: - pass - - # Create new index - self.es.indices.create(self.es_index, INDEX_SETTINGS) + # Use the rebuilder to reset the index + self.get_rebuilder().reset_index() def add_type(self, model): # Get mapping