Krebil.UmbracoAzureSearch
1.0.2
dotnet add package Krebil.UmbracoAzureSearch --version 1.0.2
NuGet\Install-Package Krebil.UmbracoAzureSearch -Version 1.0.2
<PackageReference Include="Krebil.UmbracoAzureSearch" Version="1.0.2" />
<PackageVersion Include="Krebil.UmbracoAzureSearch" Version="1.0.2" />
<PackageReference Include="Krebil.UmbracoAzureSearch" />
paket add Krebil.UmbracoAzureSearch --version 1.0.2
#r "nuget: Krebil.UmbracoAzureSearch, 1.0.2"
#:package Krebil.UmbracoAzureSearch@1.0.2
#addin nuget:?package=Krebil.UmbracoAzureSearch&version=1.0.2
#tool nuget:?package=Krebil.UmbracoAzureSearch&version=1.0.2
Krebil.UmbracoAzureSearch
An Azure AI Search provider for Umbraco Search.
Note: Umbraco Search is a work in progress. Things might change at a moment's notice.
Prerequisites
- Umbraco v17+
- An Azure AI Search instance (create one in the Azure portal)
Installation
Install the core Umbraco Search package and this provider:
dotnet add package Umbraco.Cms.Search.Core
dotnet add package Krebil.UmbracoAzureSearch
Configuration
Add your Azure AI Search credentials to appsettings.json:
{
"UmbracoAzureSearch": {
"Endpoint": "https://your-search-service.search.windows.net",
"Key": "your-api-key"
}
}
Registration
Register the services via a composer:
public sealed class SearchComposer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.AddSearchCore();
builder.Services.AddUmbracoAzureSearch(builder.Config);
}
}
Usage
Inject IAzureSearchSearcher (or ISearcherResolver to resolve it by index alias) and call SearchAsync. See the Umbraco Search documentation for the full API: filtering, faceting, sorting, pagination, culture/segment variants, and protected content all work the same way.
public class MySearchService(IAzureSearchSearcher searcher)
{
public async Task<SearchResult> SearchAsync(string query)
=> await searcher.SearchAsync(
indexAlias: SearchConstants.IndexAliases.PublishedContent,
query: query,
filters:
[
new KeywordFilter("genre", ["rock", "pop"], Negate: false)
],
facets:
[
new KeywordFacet("genre"),
new IntegerRangeFacet("releaseYear",
[
new("50s", 1950, 1960),
new("80s", 1980, 1990)
])
],
sorters:
[
new IntegerSorter("releaseYear", Direction.Descending)
],
skip: 0,
take: 10
);
}
Azure AI Search limitations
- No guaranteed ordering without an explicit sort — always provide a sorter when result order matters.
- No multiple facet types on the same field — e.g.
IntegerExactFacetandIntegerRangeFacetcannot both be applied to the same field in a single query. The provider works around this internally by running a separate query per field, so mixed facet types across different fields work fine.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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
- Azure.Search.Documents (>= 11.7.0)
- Throw (>= 1.4.0)
- Umbraco.Cms.Api.Common (>= 17.0.0 && < 18.0.0)
- Umbraco.Cms.Api.Management (>= 17.0.0 && < 18.0.0)
- Umbraco.Cms.Search.Core (>= 1.0.0)
- Umbraco.Cms.Web.Common (>= 17.0.0 && < 18.0.0)
- Umbraco.Cms.Web.Website (>= 17.0.0 && < 18.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.2 | 124 | 6/24/2026 |
| 1.0.1 | 101 | 6/24/2026 |
| 1.0.0 | 104 | 6/24/2026 |
| 1.0.0-beta.8 | 152 | 6/2/2026 |
| 1.0.0-beta.5 | 58 | 6/1/2026 |
| 1.0.0-beta.4 | 64 | 6/1/2026 |
| 1.0.0-beta.3 | 89 | 5/27/2026 |
| 1.0.0-beta.2 | 67 | 5/26/2026 |
| 1.0.0-beta.1 | 105 | 4/24/2026 |
| 1.0.0-alpha.2 | 78 | 3/10/2026 |
| 1.0.0-alpha.1 | 79 | 3/2/2026 |