Skip to content

Commit 96afeab

Browse files
committed
feat: 支持映射配置文件
1 parent 430138c commit 96afeab

22 files changed

+904
-62
lines changed

samples/Bing.Elasticsearch.WinformSample/Bing.Elasticsearch.WinformSample.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
<UseWindowsForms>true</UseWindowsForms>
77
</PropertyGroup>
88

9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.0" />
11+
</ItemGroup>
12+
913
<ItemGroup>
1014
<ProjectReference Include="..\..\src\Bing.Elasticsearch\Bing.Elasticsearch.csproj" />
1115
</ItemGroup>

src/Bing.Elasticsearch/Bing.Elasticsearch.xml

Lines changed: 257 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Bing.Elasticsearch/ElasticsearchContext.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Threading;
55
using System.Threading.Tasks;
66
using Bing.Elasticsearch.Internals;
7+
using Bing.Elasticsearch.Mapping;
78
using Bing.Elasticsearch.Options;
89
using Bing.Elasticsearch.Provider;
910
using Bing.Elasticsearch.Repositories;
@@ -39,16 +40,23 @@ public class ElasticsearchContext : IElasticsearchContext
3940
/// </summary>
4041
private readonly ElasticsearchOptions _options;
4142

43+
/// <summary>
44+
/// ES映射工厂
45+
/// </summary>
46+
private readonly IElasticMappingFactory _mappingFactory;
47+
4248
/// <summary>
4349
/// 初始化一个<see cref="ElasticsearchContext"/>类型的实例
4450
/// </summary>
4551
/// <param name="provider">ES客户端提供程序</param>
4652
/// <param name="resolver">索引名称解析器</param>
53+
/// <param name="mappingFactory">ES映射工厂</param>
4754
/// <param name="options">ES选项配置</param>
48-
public ElasticsearchContext(IElasticClientProvider provider, IIndexNameResolver resolver, IOptions<ElasticsearchOptions> options)
55+
public ElasticsearchContext(IElasticClientProvider provider, IIndexNameResolver resolver, IElasticMappingFactory mappingFactory, IOptions<ElasticsearchOptions> options)
4956
{
5057
_provider = provider;
5158
_resolver = resolver;
59+
_mappingFactory = mappingFactory;
5260
_client = provider.GetClient();
5361
_options = options.Value;
5462
}
@@ -117,7 +125,8 @@ public async Task<CreateIndexResponse> CreateIndexAsync(string index, string ali
117125
/// <param name="cancellationToken">取消令牌</param>
118126
public async Task CreateIndexAsync<TDocument>(string index, string alias = null, CancellationToken cancellationToken = default) where TDocument : class
119127
{
120-
await _client.CreateIndexAsync<TDocument>(index, _options.NumberOfShards, _options.NumberOfReplicas, cancellationToken);
128+
//await _client.CreateIndexAsync<TDocument>(index, _options.NumberOfShards, _options.NumberOfReplicas, cancellationToken);
129+
await _client.CreateIndexAsync<TDocument>(_mappingFactory, index, cancellationToken);
121130
if (alias.IsEmpty() == false)
122131
await _client.Indices.PutAliasAsync(index, alias, ct: cancellationToken);
123132
}

src/Bing.Elasticsearch/Extensions.Service.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Bing.Elasticsearch.Mapping;
23
using Bing.Elasticsearch.Options;
34
using Bing.Elasticsearch.Provider;
45
using Bing.Elasticsearch.Repositories;
@@ -20,9 +21,12 @@ public static partial class Extensions
2021
public static void AddElasticsearch(this IServiceCollection services, Action<ElasticsearchOptions> setupAction)
2122
{
2223
services.Configure(setupAction);
24+
services.GetOrAddAllAssemblyFinder();
25+
services.GetOrAddTypeFinder<IElasticMappingTypeFinder>(assemblyFinder => new ElasticMappingTypeFinder(assemblyFinder));
2326
services.TryAddSingleton<IIndexNameResolver, IndexNameResolver>();
2427
services.TryAddSingleton<IElasticClientProvider, ElasticClientProvider>();
2528
services.TryAddScoped<IElasticsearchContext, ElasticsearchContext>();
29+
services.TryAddSingleton<IElasticMappingFactory, ElasticMappingFactory>();
2630
services.TryAddScoped(typeof(IEsRepository<>), typeof(EsRepository<>));
2731
}
2832
}

0 commit comments

Comments
 (0)