2016-12-29 6 views
3

Я хочу проверить, нормально ли подключено к базе данных Elasticsearch. Другими словами, я хочу выполнить ping Elasticsearch. Когда я выполняю приведенный ниже код, генерируется исключение.Как проверить, установлено ли соединение с Elasticsearch?

public async Task<HealthCheckResult> Execute() 
    { 
     if (_configuration.Nodes?.Length == 0) 
     { 
      await Task.Delay(1); 
      return new HealthCheckResult("Connection Failed - Missing elasticsearch connection string") 
      { 
       ChildResults = new List<HealthCheckResult>() {new HealthCheckResult()} 
      }; 
     } 

     var node = new Uri(_configuration.Nodes.First()); 


     try 
     { 
      var connectionPool = new SniffingConnectionPool(new[] {node}); 
      var settings = new ConnectionConfiguration(connectionPool); 
      var client = new ElasticLowLevelClient(settings); 
      client.IndicesExists<string>("applications"); 
     } 
     catch (Exception exception) 
     { 
      return new HealthCheckResult(exception.Message) 
      { 
       ChildResults = new List<HealthCheckResult>() { new HealthCheckResult() } 
      }; 
     } 

     return new HealthCheckResult("Connection Passed") 
     { 
      ChildResults = new List<HealthCheckResult>() { new HealthCheckResult() } 
     }; 
    } 

Когда я исполню метод выше, исключение, и я получаю сообщение:

Failed нюхает состояние кластера.

Что я могу сделать для проверки того, установлено соединение с Elasticsearch?

+1

Какой версии НЕСТ вы используете и какую версию Elasticsearch вы работаете против? Установите '.DisableDirectStreaming()' в 'ConnectionSettings', чтобы получить более подробную информацию о сбое нюхания состояния кластера. –

ответ

1

У меня была такая же проблема, и мне удалось исправить это, изменив SniffingConnectionPool на SingleNodeConnectionPool.

0

Интерфейс Гнезда IElasticClient обеспечивает метод Ping для этой цели

Смежные вопросы