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); } }
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); }
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); }