def pre_index(new_index, old_index, alias, index_name, settings): """ This sets up everything needed before indexing: * Flags the database. * Creates the new index. """ indexer = INDEXER_MAP[index_name] # Flag the database to indicate that the reindexing has started. _print('Flagging the database to start the reindexation.', alias) Reindexing.flag_reindexing(new_index=new_index, old_index=old_index, alias=alias) time.sleep(5) # Give the celery worker some time to flag the DB. _print('Creating the mapping for index {index}.'.format(index=new_index), alias) # Update settings with mapping. settings = { 'settings': settings, 'mappings': indexer.get_mapping(), } # Create index and mapping. try: ES.indices.create(index=new_index, body=settings) except elasticsearch.ElasticsearchException as e: raise CommandError('ERROR: New index [%s] already exists? %s' % (new_index, e)) # Don't return until the health is green. By default waits for 30s. ES.cluster.health(index=new_index, wait_for_status='green', wait_for_relocating_shards=0)
def pre_index(new_index, old_index, alias, indexer, settings): """ This sets up everything needed before indexing: * Flags the database. * Creates the new index. """ # Flag the database to indicate that the reindexing has started. _print('Flagging the database to start the reindexation.', alias) Reindexing.flag_reindexing(new_index=new_index, old_index=old_index, alias=alias) time.sleep(5) # Give celeryd some time to flag the DB. _print('Creating the mapping for index {index}.'.format(index=new_index), alias) # Update settings with mapping. settings = { 'settings': settings, 'mappings': indexer.get_mapping(), } # Create index and mapping. try: ES.indices.create(index=new_index, body=settings) except elasticsearch.ElasticsearchException as e: raise CommandError('ERROR: New index [%s] already exists? %s' % (new_index, e)) # Don't return until the health is green. By default waits for 30s. ES.cluster.health(index=new_index, wait_for_status='green', wait_for_relocating_shards=0)
def test_flag_reindexing(self): assert Reindexing.objects.count() == 0 # Flagging for the first time. res = Reindexing.flag_reindexing('foo', 'bar', 'baz') eq_(Reindexing.objects.filter(alias='foo').count(), 1) eq_(res.alias, 'foo') eq_(res.old_index, 'bar') eq_(res.new_index, 'baz') # Flagging for the second time. res = Reindexing.flag_reindexing('foo', 'bar', 'baz') assert Reindexing.objects.filter(alias='foo').count() == 1 assert res is None
def flag_database(new_index, old_index, alias): """Flags the database to indicate that the reindexing has started.""" sys.stdout.write('Flagging the database to start the reindexation\n') Reindexing.flag_reindexing(new_index=new_index, old_index=old_index, alias=alias) time.sleep(5) # Give celeryd some time to flag the DB.