using Microsoft.Extensions.Options; using Nest; using System; using Volo.Abp.DependencyInjection; namespace Sanhe.Abp.Elasticsearch { public class ElasticsearchClientFactory : IElasticsearchClientFactory, ISingletonDependency { private readonly AbpElasticsearchOptions _options; private readonly Lazy _lazyClient; public ElasticsearchClientFactory( IOptions options) { _options = options.Value; _lazyClient = new Lazy(CreateClient); } public IElasticClient Create() => _lazyClient.Value; protected virtual IElasticClient CreateClient() { var configuration = _options.CreateConfiguration(); var client = new ElasticClient(configuration); return client; } } }