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.8.0 9 02/19/2025
0.7.5 8 11/30/2024
0.7.4 8 12/01/2024
0.7.3 7 10/25/2024
0.7.2 8 10/25/2024
0.7.1 8 10/25/2024
0.7.0 16 04/20/2024
0.6.0 16 03/28/2024
0.5.7 8 02/18/2024
0.5.6 10 01/24/2024
0.5.5 10 01/08/2024
0.5.4 11 01/08/2024
0.5.3 12 12/19/2023
0.5.2 11 12/19/2023
0.5.1 10 06/13/2023
0.5.0 9 06/13/2023
0.4.3 11 12/06/2023
0.4.2 12 06/14/2023
0.4.1 10 02/16/2024
0.4.0 9 06/13/2023
0.3.2 13 06/14/2023
0.3.1 10 06/13/2023
0.3.0 11 06/13/2023
0.2.2 12 06/13/2023
0.2.1 13 06/13/2023
0.2.0 10 06/14/2023
0.1.0 8 06/14/2023