SplatDev.Search.OpenSearch
1.0.3
dotnet add package SplatDev.Search.OpenSearch --version 1.0.3
NuGet\Install-Package SplatDev.Search.OpenSearch -Version 1.0.3
<PackageReference Include="SplatDev.Search.OpenSearch" Version="1.0.3" />
<PackageVersion Include="SplatDev.Search.OpenSearch" Version="1.0.3" />
<PackageReference Include="SplatDev.Search.OpenSearch" />
paket add SplatDev.Search.OpenSearch --version 1.0.3
#r "nuget: SplatDev.Search.OpenSearch, 1.0.3"
#:package SplatDev.Search.OpenSearch@1.0.3
#addin nuget:?package=SplatDev.Search.OpenSearch&version=1.0.3
#tool nuget:?package=SplatDev.Search.OpenSearch&version=1.0.3
SplatDev.Search.OpenSearch
OpenSearch adapter for SplatDev.Search abstractions — AWS-hosted or self-hosted OpenSearch with full-text search, filtering, sorting, and bulk indexing via the official OpenSearch.Client SDK.
Compatibility
| .NET | Umbraco | Package Version |
|---|---|---|
| 8.0 | 13 | 1.0.3 |
| 10.0 | 17 | 1.0.3 |
Installation
dotnet add package SplatDev.Search.OpenSearch
Configuration
DI registration
using SplatDev.Search;
using SplatDev.Search.OpenSearch.Services;
// Self-hosted (no auth)
builder.Services.AddSingleton<ISearchProvider>(_ =>
new OpenSearchProvider(new Uri("http://localhost:9200")));
// Self-hosted with basic auth
builder.Services.AddSingleton<ISearchProvider>(_ =>
new OpenSearchProvider(new Uri("https://search.example.com"), "admin", "password"));
// AWS OpenSearch Service uses IAM-based auth — configure via environment/AWS SDK
Usage
using SplatDev.Search;
public class DocumentIndex
{
private readonly ISearchProvider _search;
public DocumentIndex(ISearchProvider search) => _search = search;
public async Task IndexAsync(Document doc)
{
await _search.IndexAsync("documents", doc);
}
public async Task<SearchResult<Document>> SearchAsync(string term)
{
return await _search.SearchAsync<Document>("documents", new SearchRequest
{
Query = term,
Size = 50,
Sort = [new SearchSortField { Field = "created", Direction = SortDirection.Descending }],
Filters = new Dictionary<string, object> { { "status", "published" } },
});
}
}
Features
- Full
ISearchProviderimplementation backed byOpenSearch.Clientv1.8 - Multi-match queries across configurable fields
- Term-level filtering with boolean AND combination
- Sorting by field with direction
- Source filtering (field projection)
- Bulk indexing via
IndexManyAsync - Index management (create, delete, exists)
- Basic authentication support for self-hosted instances
Dependencies
| Package | Purpose |
|---|---|
SplatDev.Search |
Core abstractions (ISearchProvider) |
OpenSearch.Client |
Official OpenSearch .NET SDK |
SplatDev.Search.OpenSearch — 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
- OpenSearch.Client (>= 1.8.0)
- SplatDev.Search (>= 1.0.2)
-
net8.0
- OpenSearch.Client (>= 1.8.0)
- 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.