in src/Elastic.Ingest.Elasticsearch/Serialization/BulkRequestDataFactory.cs [131:162]
public static BulkOperationHeader CreateBulkOperationHeaderForIndex<TEvent>(TEvent @event, IndexChannelOptions<TEvent> options,
bool skipIndexName = false)
{
var indexTime = options.TimestampLookup?.Invoke(@event) ?? DateTimeOffset.Now;
if (options.IndexOffset.HasValue) indexTime = indexTime.ToOffset(options.IndexOffset.Value);
var index = skipIndexName ? string.Empty : string.Format(options.IndexFormat, indexTime);
var id = options.BulkOperationIdLookup?.Invoke(@event);
if (options.OperationMode == OperationMode.Index)
{
return skipIndexName
? !string.IsNullOrWhiteSpace(id) ? new IndexOperation { Id = id } : new IndexOperation()
: !string.IsNullOrWhiteSpace(id) ? new IndexOperation { Index = index, Id = id } : new IndexOperation { Index = index };
}
if (options.OperationMode == OperationMode.Create)
{
return skipIndexName
? !string.IsNullOrWhiteSpace(id) ? new CreateOperation { Id = id } : new CreateOperation()
: !string.IsNullOrWhiteSpace(id) ? new CreateOperation { Index = index, Id = id } : new CreateOperation { Index = index };
}
if (!string.IsNullOrWhiteSpace(id) && id != null && (options.BulkUpsertLookup?.Invoke(@event, id) ?? false))
return skipIndexName ? new UpdateOperation { Id = id } : new UpdateOperation { Id = id, Index = index };
return
!string.IsNullOrWhiteSpace(id)
? skipIndexName ? new IndexOperation { Id = id } : new IndexOperation { Index = index, Id = id }
: skipIndexName ? new CreateOperation() : new CreateOperation { Index = index };
}