public ElasticsearchReporter(string[] elasticsearchUris, string indexName , string apiId = null, string apiKey = null , string username = null, string password = null , int?timeoutSeconds = null, bool debug = false) { _uris = elasticsearchUris; _indexName = indexName; _debug = debug; //https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.x/connection-pooling.html if (null == elasticsearchUris || 0 == elasticsearchUris.Length) { throw new ArgumentException("Uri list should not be empty", nameof(elasticsearchUris)); } IConnectionPool pool = elasticsearchUris.Length == 1 ? new SingleNodeConnectionPool(new Uri(elasticsearchUris.First())) as IConnectionPool : new StaticConnectionPool(_uris.Select(u => new Uri(u))); var _settings = new ConnectionSettings(pool) .DefaultIndex(indexName) //.DefaultMappingFor<ElasticsearchErrorDocument>(m => m) //.IndexName()) ; if (!string.IsNullOrEmpty(apiId)) { _settings.ApiKeyAuthentication(apiId, apiKey); } if (!string.IsNullOrEmpty(username)) { _settings.BasicAuthentication(username, password); _settings.ServerCertificateValidationCallback((o, certificate, chain, errors) => true); } if (timeoutSeconds.HasValue) { _settings = _settings.RequestTimeout(TimeSpan.FromSeconds(timeoutSeconds.Value)) .MaxDeadTimeout(TimeSpan.FromSeconds(timeoutSeconds.Value)); } if (_debug) { _settings = _settings.DisableDirectStreaming(); } _client = new ElasticsearchImpl.ElasticClient(new ElasticClient(_settings)); }
public ElasticsearchReporter(ElasticsearchInterface.IElasticClient client) { _client = client; }