/// <summary> /// Builds the IElasticClient instance with the connection settings. /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IElasticsearchInstanceBuilder AddClient(this IElasticsearchBuilder builder) { if (builder.ConnectionSettings == null) { throw new ArgumentNullException(nameof(builder.ConnectionSettings), "Connection Settings must be set."); } builder.Services.AddSingleton <IElasticClient>(new ElasticClient(builder.ConnectionSettings)); return(new ElasticsearchInstanceBuilder(builder.Services)); }
public static void InitService(IElasticsearchBuilder builder, IConfiguration configuration) { builder.Services.TryAddSingleton <IConfigureOptions <ElasticsearchOptions> >( new ElasticsearchConfigurationOptions(configuration)); builder.Services.TryAddSingleton (ServiceDescriptor.Singleton <IOptionsChangeTokenSource <ElasticsearchOptions> >( new ConfigurationChangeTokenSource <ElasticsearchOptions>(configuration))); builder.Services .TryAddEnumerable(ServiceDescriptor.Singleton <IConfigureOptions <ElasticsearchOptions> > (new ConfigureFromConfigurationOptions <ElasticsearchOptions>(configuration))); builder.Services.AddSingleton(new ElasticsearchConfiguration(configuration)); }
/// <summary> /// Adds the mapping for a given type T. /// </summary> /// <typeparam name="T"></typeparam> public static IElasticsearchBuilder AddDefaultMappingFor <T>(this IElasticsearchBuilder builder, string name) where T : class { if (builder.ConnectionSettings == null) { throw new ArgumentNullException(nameof(builder.ConnectionSettings), "Connection Settings must be set."); } IElasticClient client = builder.Services.BuildServiceProvider().GetRequiredService(typeof(IElasticClient)) as IElasticClient; if (client != null) { throw new Exception($"IElasticClient has already been configured. Ensure '{nameof(AddDefaultMappingFor)}()' is called before '{nameof(AddClient)}()'"); } builder.ConnectionSettings = builder.ConnectionSettings .DefaultMappingFor <T>(m => m .TypeName(name) .IndexName(name)); return(builder); }
public static IElasticsearchBuilder AddConfiguration(this IElasticsearchBuilder builder , IConfiguration configuration) { InitService(builder, configuration); return(builder); }