diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs index 5db064fd5f..8b4d82e5cd 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs @@ -21,7 +21,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic { var node = new Uri(Configuration["ElasticSearch:Url"]); var settings = new ConnectionSettings(node).DefaultIndex(Options.IndexName); - return new ElasticClient(settings); + return new ElasticClient(Options.Authenticate(settings)); } } -} \ No newline at end of file +} diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs index 40bbf66b08..6a17a034c4 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs @@ -1,15 +1,53 @@ -namespace Volo.Docs.Documents.FullSearch.Elastic +using System; +using Nest; +using Volo.Abp; + +namespace Volo.Docs.Documents.FullSearch.Elastic { public class DocsElasticSearchOptions { + public bool Enable { get; set; } + + public string IndexName { get; set; } + + protected Action AuthenticationAction { get; set; } + public DocsElasticSearchOptions() { Enable = false; IndexName = "abp_documents"; } - public bool Enable { get; set; } + public DocsElasticSearchOptions UseBasicAuthentication(string username, string password) + { + Check.NotNullOrEmpty(username, nameof(username)); + Check.NotNullOrEmpty(password, nameof(password)); - public string IndexName { get; set; } + AuthenticationAction = settings => + { + settings.BasicAuthentication(username, password); + }; + + return this; + } + + public DocsElasticSearchOptions UseApiKeyAuthentication(string id, string apiKey) + { + Check.NotNullOrEmpty(id, nameof(id)); + Check.NotNullOrEmpty(apiKey, nameof(apiKey)); + + AuthenticationAction = settings => + { + settings.ApiKeyAuthentication(id, apiKey); + }; + + return this; + } + + public ConnectionSettings Authenticate(ConnectionSettings connectionSettings) + { + AuthenticationAction?.Invoke(connectionSettings); + return connectionSettings; + } } }