Elasticsearch Provider
The Elasticsearch provider offers full-text search and analytics with a resilient client wrapper, index lifecycle management, projection store integration, and health monitoring.
Before You Start
- .NET 8.0+ (or .NET 9/10 for latest features)
- An Elasticsearch cluster (local, Elastic Cloud, or AWS OpenSearch)
- Familiarity with data access and projections
Installation
dotnet add package Excalibur.Data.ElasticSearch
Dependencies: Excalibur.Data.Abstractions, Elastic.Clients.Elasticsearch
Quick Start
using Microsoft.Extensions.DependencyInjection;
services.AddElasticsearchServices(configuration);
Registration Options
Basic Registration
// From configuration
services.AddElasticsearchServices(configuration, registry: null);
// With pre-configured client
services.AddElasticsearchServices(elasticsearchClient, registry: null);
// With client settings callback
services.AddElasticsearchServices(configuration, registry: null, configureSettings: settings =>
{
settings.DisableDirectStreaming();
});
Resilient Client
Adds Polly-based retry and circuit breaker policies:
services.AddResilientElasticsearchServices(configuration);
Monitoring
services.AddElasticsearchMonitoring(configuration);
Combined Resilient + Monitoring
services.AddMonitoredResilientElasticsearchServices(configuration);
Index Management
services.AddElasticsearchIndexManagement(configuration);
Projection Store
services.AddElasticsearchProjections(configuration);
Health Checks
services.AddHealthChecks()
.AddElasticHealthCheck("elasticsearch", timeout: TimeSpan.FromSeconds(5));
Security
services.AddElasticsearchSecurity(configuration);
Performance Optimizations
services.AddResilientElasticsearchServices(configuration);
Resilient Client
The IResilientElasticsearchClient wraps the Elasticsearch client with retry and circuit breaker policies:
public interface IResilientElasticsearchClient
{
// Operations with automatic retry and circuit breaking
}
Index Lifecycle Management
Manage indices, templates, aliases, and ILM policies:
IIndexInitializer— Bootstrap indices on startupIIndexTemplateManager— Manage index templatesIIndexLifecycleManager— Configure ILM policiesIIndexOperationsManager— CRUD operations on indicesIIndexAliasManager— Manage index aliases
See Also
- Data Providers Overview — Architecture and core abstractions
- MongoDB Provider — Document store alternative
- Observability — Elasticsearch for log aggregation