protected virtual async Task RemoveDataAsync(bool configureIndexes = true)
        {
            var minimumLevel = Log.MinimumLevel;

            Log.MinimumLevel = LogLevel.Warning;

            var sw = Stopwatch.StartNew();

            _logger.LogInformation("Starting remove data");

            await _workItemQueue.DeleteQueueAsync();

            await _configuration.DeleteIndexesAsync();

            if (configureIndexes)
            {
                await _configuration.ConfigureIndexesAsync(null, false);
            }

            await _cache.RemoveAllAsync();

            _cache.ResetStats();
            await _client.Indices.RefreshAsync(Indices.All);

            _messageBus.ResetMessagesSent();
            sw.Stop();
            _logger.LogInformation("Done removing data {Duration}", sw.Elapsed);

            Log.MinimumLevel = minimumLevel;
        }