コード例 #1
0
 private static void LogError(IndexResult indexResult)
 {
     if (indexResult.ErrorType == ErrorType.Failed)
     {
         Log.Error(indexResult.Message);
     }
     else if (indexResult.ErrorType == ErrorType.VersionConflict)
     {
         Log.Debug(indexResult.Message);
     }
 }
コード例 #2
0
        private IndexResult CreateErrorResult(BulkResponseItemBase item)
        {
            string message   = null;
            var    errorType = ErrorType.None;

            if (!item.IsValid)
            {
                errorType = GetErrorType(item.Error);
                message   = item.Error.Reason;
            }
            var indexResult = new IndexResult(item.IsValid, errorType, message);

            return(indexResult);
        }
コード例 #3
0
        public async Task <IEnumerable <IndexResult> > IndexMany <T>(IEnumerable <SearchableItem <T> > items)
        {
            var retval = new List <IndexResult>();

            foreach (var itemBatch in items.Batch(_configuration.BatchSize))
            {
                var request = new BulkDescriptor();
                request.CreateMany(itemBatch).Index(_configuration.Index);
                var result = await _client.BulkAsync(request);

                if (result.ApiCall.HttpStatusCode.HasValue && result.ApiCall.HttpStatusCode.Value >= 300)
                {
                    Log.Error(result.OriginalException, "Unable to bulk insert to elastic");
                    return(new IndexResult[0]);
                }
                foreach (var item in result.Items)
                {
                    IndexResult indexResult = CreateErrorResult(item);
                    LogError(indexResult);
                    retval.Add(indexResult);
                }
            }
            return(retval);
        }