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.

Packages Downloads
Elastic.Ingest.Elasticsearch.CommonSchema
Package Description
7
Elastic.Ingest.Elasticsearch.CommonSchema
Package Description
8
Elastic.Ingest.Elasticsearch.CommonSchema
Package Description
9
Elastic.Ingest.Elasticsearch.CommonSchema
Package Description
10
Elastic.Ingest.Elasticsearch.CommonSchema
Package Description
12

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

.NET Standard 2.1

Version Downloads Last updated
0.8.0 6 02/23/2025
0.7.5 8 01/01/2025
0.7.4 7 01/01/2025
0.7.3 7 01/01/2025
0.7.2 7 01/01/2025
0.7.1 7 01/01/2025
0.7.0 7 01/01/2025
0.6.0 7 01/01/2025
0.5.7 7 01/01/2025
0.5.6 7 01/01/2025
0.5.5 8 01/01/2025
0.5.4 7 01/01/2025
0.5.3 8 01/01/2025
0.5.2 8 01/01/2025
0.5.1 7 01/01/2025
0.5.0 7 01/01/2025
0.4.3 7 01/01/2025
0.4.2 7 01/01/2025
0.4.1 7 01/01/2025
0.4.0 7 01/01/2025
0.3.2 7 01/01/2025
0.3.1 8 01/01/2025
0.3.0 7 01/01/2025
0.2.2 7 01/01/2025
0.2.1 7 01/01/2025
0.2.0 8 01/01/2025
0.1.0 7 01/01/2025