SplatDev.Search.Elastic
1.0.3
dotnet add package SplatDev.Search.Elastic --version 1.0.3
NuGet\Install-Package SplatDev.Search.Elastic -Version 1.0.3
<PackageReference Include="SplatDev.Search.Elastic" Version="1.0.3" />
<PackageVersion Include="SplatDev.Search.Elastic" Version="1.0.3" />
<PackageReference Include="SplatDev.Search.Elastic" />
paket add SplatDev.Search.Elastic --version 1.0.3
#r "nuget: SplatDev.Search.Elastic, 1.0.3"
#:package SplatDev.Search.Elastic@1.0.3
#addin nuget:?package=SplatDev.Search.Elastic&version=1.0.3
#tool nuget:?package=SplatDev.Search.Elastic&version=1.0.3
SplatDev.Search.Elastic
Elasticsearch 8+ adapter for SplatDev.Search abstractions — full-text search, filtering, sorting, and bulk indexing via the official Elastic.Clients.Elasticsearch SDK.
Compatibility
| .NET | Umbraco | Package Version |
|---|---|---|
| 8.0 | 13 | 1.0.3 |
| 10.0 | 17 | 1.0.3 |
Installation
dotnet add package SplatDev.Search.Elastic
Configuration
DI registration
using SplatDev.Search;
using SplatDev.Search.Elastic.Services;
// Cloud deployment (Elastic Cloud)
builder.Services.AddSingleton<ISearchProvider>(_ =>
new ElasticSearchProvider("my-deployment:ZXVyb3B...", "api-key-string"));
// Self-hosted / local
builder.Services.AddSingleton<ISearchProvider>(_ =>
new ElasticSearchProvider(new Uri("http://localhost:9200")));
Usage
using SplatDev.Search;
public class ProductCatalog
{
private readonly ISearchProvider _search;
public ProductCatalog(ISearchProvider search) => _search = search;
public async Task IndexProductAsync(Product product)
{
await _search.IndexAsync("products", product);
}
public async Task BulkIndexAsync(IEnumerable<Product> products)
{
await _search.IndexManyAsync("products", products);
}
public async Task<SearchResult<Product>> SearchProductsAsync(string term, int page = 0)
{
return await _search.SearchAsync<Product>("products", new SearchRequest
{
Query = term,
From = page * 20,
Size = 20,
Sort =
[
new SearchSortField { Field = "price", Direction = SortDirection.Descending },
],
Filters = new Dictionary<string, object>
{
{ "category", "electronics" },
{ "inStock", "true" },
},
Fields = ["name", "price", "category"],
});
}
}
Features
- Full
ISearchProviderimplementation backed byElastic.Clients.Elasticsearchv8.15+ - Multi-match queries across configurable fields
- Term-level filters (converted to boolean filter clauses)
- Sorting by field with direction
- Source filtering (field projection)
- Bulk indexing via
IndexManyAsync - Index management (create, delete, exists)
- Delete by query string
- Both cloud (Elastic Cloud) and self-hosted connection modes
Dependencies
| Package | Purpose |
|---|---|
SplatDev.Search |
Core abstractions (ISearchProvider) |
Elastic.Clients.Elasticsearch |
Official Elasticsearch v8+ .NET SDK |
SplatDev.Search.Elastic — part of the SplatDev.Umbraco.Plugins suite. Licensed under MIT. © SplatDev Ltda.
Changelog
1.0.3 — 2026-08-25
Documentation only, no code change. The README's search example used SearchSort; the real type is SearchSortField. It also assigned a Dictionary<string, string> to SearchRequest.Filters, which is a Dictionary<string, object> — so the sample did not compile on either count. It is now compiled against the assembly.
1.0.2 — 2026-08-24
Removes a dashboard screenshot that showed an error toast. It was captured against a site where this plugin's API was unreachable, so it advertised a broken dashboard. No screenshot is better than a misleading one; a replacement will be taken against a working install.
1.0.1 — 2026-08-24
Package metadata only: the listing now carries an icon and search tags, and the project and repository links point at the organisation that actually hosts this code. No code changes.
1.0.0 — 2026-08-24
This package now keeps a changelog. Earlier releases predate it and are not reconstructed here — consult the repository history for those. From this version on, every release records what changed for someone using it.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Elastic.Clients.Elasticsearch (>= 8.15.10)
- SplatDev.Search (>= 1.0.2)
-
net8.0
- Elastic.Clients.Elasticsearch (>= 8.15.10)
- SplatDev.Search (>= 1.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.