class ElasticSearchCartDaily(object):
def __init__(self, es_index_name, host=None, version=_CONFIG.ELASTICSEARCH_VERSION):
hosts = (host, ) if host else _CONFIG.ELASTICSEARCH_HOSTS
self.es = Elasticsearch(hosts)
self.version = version
# Need two indices, one to alias to when we update the index, and one to hold historical stats.
# They will both be alternating as a search or update index per build
self.es_index_name_a = u'{}_a'.format(es_index_name)
self.es_index_name_b = u'{}_b'.format(es_index_name)
self.index_to_update = self.es_index_name_a
self.index_to_delete = self.es_index_name_b
def initialize_indices(self):
log_msg(u'Searching for ES index...')
# If index a exists, index b was deleted in previous build
if self.es.indices.exists(index=self.es_index_name_a):
log_msg(u'ES index {} already exists.'.format(self.es_index_name_a))
self.index_to_update = self.es_index_name_b
self.index_to_delete = self.es_index_name_a
self.create_index()
return
# If index b exists, index a was deleted in previous build
if self.es.indices.exists(index=self.es_index_name_b):
log_msg(u'ES index {} already exists.'.format(self.es_index_name_b))
self.index_to_update = self.es_index_name_a
self.index_to_delete = self.es_index_name_b
self.create_index()
return
# This should only occur on very first build
self.create_index()
class ElasticSearchCartDaily(object):
def __init__(self, index_name, host=None, version=_CONFIG.ELASTICSEARCH_VERSION):
hosts = (host, ) if host else _CONFIG.ELASTICSEARCH_HOSTS
self.es = Elasticsearch(hosts)
self.version = version
self.index_a = u'{}_a'.format(index_name)
self.index_b = u'{}_b'.format(index_name)
self.index_to_update = self.index_a
self.index_to_delete = self.index_b
# If index a exists, index b was deleted in previous build, and vice versa
if self.es.indices.exists(index=self.index_a):
self.index_to_update = self.index_b
self.index_to_delete = self.index_a
elif self.es.indices.exists(index=self.index_b):
self.index_to_update = self.index_a
self.index_to_delete = self.index_b
log_msg(u'Deleting index {}, updating {}.'.format(self.index_to_delete, self.index_to_update))
self.create_index()