Пример #1
0
        /// <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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
 public static IElasticsearchBuilder AddConfiguration(this IElasticsearchBuilder builder
                                                      , IConfiguration configuration)
 {
     InitService(builder, configuration);
     return(builder);
 }