Krebil.UmbracoAzureSearch
18.1.0
dotnet add package Krebil.UmbracoAzureSearch --version 18.1.0
NuGet\Install-Package Krebil.UmbracoAzureSearch -Version 18.1.0
<PackageReference Include="Krebil.UmbracoAzureSearch" Version="18.1.0" />
<PackageVersion Include="Krebil.UmbracoAzureSearch" Version="18.1.0" />
<PackageReference Include="Krebil.UmbracoAzureSearch" />
paket add Krebil.UmbracoAzureSearch --version 18.1.0
#r "nuget: Krebil.UmbracoAzureSearch, 18.1.0"
#:package Krebil.UmbracoAzureSearch@18.1.0
#addin nuget:?package=Krebil.UmbracoAzureSearch&version=18.1.0
#tool nuget:?package=Krebil.UmbracoAzureSearch&version=18.1.0
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"
}
}
Microsoft Entra ID (managed identity)
To authenticate without an API key, pass a TokenCredential when registering and leave Key out of the configuration:
builder.Services.AddUmbracoAzureSearch(builder.Config, new DefaultAzureCredential());
DefaultAzureCredential comes from the Azure.Identity package. The search service's API access control must allow role-based access, and the identity needs the Search Service Contributor role (to create indexes) and the Search Index Data Contributor role (to index and query). A credential passed in code takes precedence over a configured 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);
}
}
AddUmbracoAzureSearch registers the four default Umbraco Search indexes (Umb_Content, Umb_PublishedContent, Umb_Media and Umb_Members) against Azure AI Search. To change one of them or add your own, configure IndexOptions after this call; the last registration for an alias wins.
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 (>= 12.1.0-beta.1)
- Throw (>= 1.4.0)
- Umbraco.Cms.Api.Common (>= 18.0.0 && < 19.0.0)
- Umbraco.Cms.Api.Management (>= 18.0.0 && < 19.0.0)
- Umbraco.Cms.Search.Core (>= 18.0.0 && < 19.0.0)
- Umbraco.Cms.Web.Common (>= 18.0.0 && < 19.0.0)
- Umbraco.Cms.Web.Website (>= 18.0.0 && < 19.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 |
|---|---|---|
| 18.1.0 | 325 | 10/8/2026 |
| 18.0.0 | 57 | 10/8/2026 |
| 17.2.0 | 55 | 10/8/2026 |
| 17.1.0 | 44 | 10/8/2026 |
| 17.0.0 | 51 | 10/8/2026 |
| 1.0.3 | 514 | 8/24/2026 |
| 1.0.2 | 381 | 6/24/2026 |
| 1.0.1 | 129 | 6/24/2026 |
| 1.0.0 | 129 | 6/24/2026 |
| 1.0.0-beta.8 | 179 | 6/2/2026 |
| 1.0.0-beta.5 | 87 | 6/1/2026 |
| 1.0.0-beta.4 | 83 | 6/1/2026 |
| 1.0.0-beta.3 | 104 | 5/27/2026 |
| 1.0.0-beta.2 | 86 | 5/26/2026 |
| 1.0.0-beta.1 | 121 | 4/24/2026 |
| 1.0.0-alpha.2 | 95 | 3/10/2026 |
| 1.0.0-alpha.1 | 93 | 3/2/2026 |