Elastic.Ingest.Elasticsearch 0.1.0

Elastic.Ingest.Elasticsearch

Elastic.Channels implementations of BufferedChannelBase that allows data to pushed to either indices or data streams

DataStreamChannel<TEvent>

A channel that specializes to writing data with a timestamp to Elasticsearch data streams. E.g given the following document.

public class TimeSeriesDocument
{
    [JsonPropertyName("@timestamp")]
    public DateTimeOffset Timestamp { get; set; }

    [JsonPropertyName("message")]
    public string Message { get; set; }
}

A channel can be created to push data to the logs-dotnet-default data stream.

var dataStream = new DataStreamName("logs", "dotnet");
var bufferOptions = new BufferOptions { }
var options = new DataStreamChannelOptions<TimeSeriesDocument>(transport)
{
  DataStream = dataStream,
  BufferOptions = bufferOptions
};
var channel = new DataStreamChannel<TimeSeriesDocument>(options);

NOTE: read more about Elastic's data stream naming convention here: https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme

we can now push data to Elasticsearch using the DataStreamChannel

var doc = new TimeSeriesDocument 
{ 
    Timestamp = DateTimeOffset.Now, 
    Message = "Hello World!", 
}
channel.TryWrite(doc);

IndexChannel<TEvent>

A channel that specializes in writing catalog data to Elastic indices. Catalog data is typically data that has an id of sorts.

Given the following minimal document

public class CatalogDocument
{
    [JsonPropertyName("id")]
    public string Id { get; set; }

    [JsonPropertyName("title")]
    public string Title { get; set; }

    [JsonPropertyName("created")]
    public DateTimeOffset Created { get; set; }
}

We can create an IndexChannel<> to push CatalogDocument instances.

var options = new IndexChannelOptions<CatalogDocument>(transport)
{
    IndexFormat = "catalog-data-{0:yyyy.MM.dd}",
    BulkOperationIdLookup = c => c.Id,
    TimestampLookup = c => c.Created,
};
var channel = new IndexChannel<CatalogDocument>(options);

now we can push data using:

var doc = new CatalogDocument 
{ 
    Created = date, 
    Title = "Hello World!", 
    Id = "hello-world" 
}
channel.TryWrite(doc);

This will push data to catalog-data-2023.01.1 because TimestampLookup yields Created to IndexFormat.

IndexFormat can also simply be a fixed string to write to an Elasticsearch alias/index.

BulkOperationIdLookup determines if the document should be pushed to Elasticsearch using a create or index operation.

Showing the top 20 packages that depend on Elastic.Ingest.Elasticsearch.

https://github.com/elastic/elastic-ingest-dotnet/releases

.NET Standard 2.1

Version Downloads Last updated
0.17.1 5 11/15/2025
0.17.0 5 11/16/2025
0.16.3 7 10/23/2025
0.16.2 4 10/26/2025
0.16.1 4 10/26/2025
0.16.0 7 10/26/2025
0.15.1 6 10/15/2025
0.15.0 9 10/15/2025
0.14.0 9 08/16/2025
0.13.2 11 08/12/2025
0.13.1 12 08/12/2025
0.13.0 12 08/12/2025
0.12.3 12 08/11/2025
0.12.2 10 08/11/2025
0.12.1 12 06/30/2025
0.12.0 12 06/30/2025
0.11.3 15 06/03/2025
0.11.2 14 06/04/2025
0.11.1 12 05/29/2025
0.11.0 14 06/04/2025
0.10.0 17 05/24/2025
0.9.0 18 05/22/2025
0.8.0 23 02/23/2025
0.7.5 23 01/01/2025
0.7.4 27 01/01/2025
0.7.3 23 01/01/2025
0.7.2 23 01/01/2025
0.7.1 23 01/01/2025
0.7.0 24 01/01/2025
0.6.0 21 01/01/2025
0.5.7 22 01/01/2025
0.5.6 21 01/01/2025
0.5.5 22 01/01/2025
0.5.4 23 01/01/2025
0.5.3 27 01/01/2025
0.5.2 22 01/01/2025
0.5.1 23 01/01/2025
0.5.0 25 01/01/2025
0.4.3 25 01/01/2025
0.4.2 23 01/01/2025
0.4.1 25 01/01/2025
0.4.0 26 01/01/2025
0.3.2 28 01/01/2025
0.3.1 24 01/01/2025
0.3.0 24 01/01/2025
0.2.2 25 01/01/2025
0.2.1 25 01/01/2025
0.2.0 24 01/01/2025
0.1.0 23 01/01/2025