Example #1
0
        public ObjectsProcessedResult IndexData(IEnumerable <object> data, Func <object, string> indexNameBuilder, string typeName)
        {
            var objectCount = 0;
            var result      = new ObjectsProcessedResult();

            var watch = new Stopwatch();

            watch.Start();

            _logger.Info($"Started to index data");

            foreach (var @object in data)
            {
                var indexName = indexNameBuilder(@object);
                var chunk     = GetChunkByIndexName(indexName, typeName);
                chunk.Add(@object);
                var processChunkResult = ProcessChunk(chunk);
                result.Add(processChunkResult);

                ++objectCount;
            }

            ProcessPendingChunks(result);
            watch.Stop();

            _logger.Info($"Index data ended - Total: {objectCount} Indexed: {result.ObjectsProcessed} Not Indexed: {result.ObjectsNotProcessed} Took: {watch.Elapsed.ToString("g")}");

            return(result);
        }
Example #2
0
        private void ProcessPendingChunks(ObjectsProcessedResult result)
        {
            foreach (var chunk in _chunks)
            {
                var processChunkResult = _chunkProcessor.ProcessChunk(chunk);
                result.Add(processChunkResult);
            }

            _chunks.Clear();
        }