Zymergi.Search.Elastic
11.0.6-alpha
dotnet add package Zymergi.Search.Elastic --version 11.0.6-alpha
NuGet\Install-Package Zymergi.Search.Elastic -Version 11.0.6-alpha
<PackageReference Include="Zymergi.Search.Elastic" Version="11.0.6-alpha" />
<PackageVersion Include="Zymergi.Search.Elastic" Version="11.0.6-alpha" />
<PackageReference Include="Zymergi.Search.Elastic" />
paket add Zymergi.Search.Elastic --version 11.0.6-alpha
#r "nuget: Zymergi.Search.Elastic, 11.0.6-alpha"
#:package Zymergi.Search.Elastic@11.0.6-alpha
#addin nuget:?package=Zymergi.Search.Elastic&version=11.0.6-alpha&prerelease
#tool nuget:?package=Zymergi.Search.Elastic&version=11.0.6-alpha&prerelease
Zymergi.Search.Elastic
Elasticsearch implementation of the engine-neutral faceted-search contracts defined in Zymergi.Core
(namespace Zymergi.Search). Application code depends on the neutral contracts
(ISearchProvider<TDocument>, ISearchIndexer<TDocument>, IIndexManager) and never references
Elasticsearch directly.
Depends on: Zymergi.Core
Why This Project Exists
Zymergi.Core defines the neutral search surface: a filter AST (IFilter), facet requests, sort,
paging, and a SearchCapabilities feature-detection record. This project translates that surface to
the Elasticsearch query DSL and projects _search responses back onto the neutral result types.
Elasticsearch supports every contract feature, so its SearchCapabilities reports all capabilities as
available with exact total counts. This includes recency (SupportsRecency = true): when a request
carries a RecencyBoost and no explicit sort, the query is wrapped in a function_score exp-decay
(origin: now, scale = HalfLife, decay: 0.5, boost_mode: multiply) so newer documents score
higher. An explicit Sort takes precedence.
Types (Provider/)
| Type | Purpose |
|---|---|
ElasticSearchProvider<TDocument> |
Read side. Builds the query DSL, POSTs to /{index}/_search, and parses hits, facets, highlights, and total (via track_total_hits). |
ElasticSearchIndexer<TDocument> |
Write side. Uses _bulk for index/delete (surfacing item-level errors), _delete_by_query for clear, and refreshes after writes so changes are searchable. |
ElasticIndexManager |
Index lifecycle. Translates an IndexDefinition into Elasticsearch mappings on create. |
ElasticQueryBuilder |
Stateless SearchRequest → ES DSL translator: bool query, filter AST, facet aggregations, sort, _source, and highlight. |
ElasticSearchServiceCollectionExtensions |
AddElasticSearch(config) (named client + IIndexManager) and AddElasticSearchIndex<TDocument>(index, keySelector) (per-index provider + indexer). |
Disjunctive Facets
A disjunctive (multi-select) terms facet must ignore its own field's filter. The builder emits it as a
global aggregation → filter sub-aggregation whose filter is the request AST with that field's
leaves removed → the facet aggregation, so the facet's counts reflect every filter except its own.
Configuration
{
"Elasticsearch": {
"ConnectionString": "https://user:password@host:9200"
}
}
services
.AddElasticSearch(configuration)
.AddElasticSearchIndex<ArticleSearchDocument>("articles", d => d.Id);
| 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
- Microsoft.Extensions.Configuration (>= 10.0.9)
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
- Microsoft.Extensions.Http (>= 10.0.9)
- Newtonsoft.Json (>= 13.0.4)
- Zymergi.Core (>= 11.0.6-alpha)
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 |
|---|---|---|
| 11.0.6-alpha | 101 | 7/10/2026 |
| 11.0.5-alpha | 69 | 7/9/2026 |
| 11.0.4-alpha | 69 | 7/6/2026 |
| 11.0.3-alpha | 66 | 7/6/2026 |
| 11.0.2-alpha | 110 | 6/30/2026 |
| 11.0.1-alpha | 116 | 6/30/2026 |
| 11.0.0-alpha | 88 | 6/29/2026 |