예제 #1
0
        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));
        }
예제 #2
0
 public ElasticsearchReporter(ElasticsearchInterface.IElasticClient client)
 {
     _client = client;
 }