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 34 11/15/2025
0.17.0 31 11/16/2025
0.16.3 30 10/23/2025
0.16.2 25 10/26/2025
0.16.1 26 10/26/2025
0.16.0 29 10/26/2025
0.15.1 33 10/15/2025
0.15.0 34 10/15/2025
0.14.0 31 08/16/2025
0.13.2 34 08/12/2025
0.13.1 37 08/12/2025
0.13.0 36 08/12/2025
0.12.3 30 08/11/2025
0.12.2 28 08/11/2025
0.12.1 36 06/30/2025
0.12.0 36 06/30/2025
0.11.3 41 06/03/2025
0.11.2 38 06/04/2025
0.11.1 39 05/29/2025
0.11.0 42 06/04/2025
0.10.0 39 05/24/2025
0.9.0 42 05/22/2025
0.8.0 48 02/23/2025
0.7.5 42 01/01/2025
0.7.4 49 01/01/2025
0.7.3 42 01/01/2025
0.7.2 42 01/01/2025
0.7.1 46 01/01/2025
0.7.0 44 01/01/2025
0.6.0 47 01/01/2025
0.5.7 47 01/01/2025
0.5.6 42 01/01/2025
0.5.5 41 01/01/2025
0.5.4 44 01/01/2025
0.5.3 47 01/01/2025
0.5.2 44 01/01/2025
0.5.1 46 01/01/2025
0.5.0 44 01/01/2025
0.4.3 49 01/01/2025
0.4.2 42 01/01/2025
0.4.1 46 01/01/2025
0.4.0 50 01/01/2025
0.3.2 52 01/01/2025
0.3.1 47 01/01/2025
0.3.0 44 01/01/2025
0.2.2 50 01/01/2025
0.2.1 48 01/01/2025
0.2.0 42 01/01/2025
0.1.0 44 01/01/2025