2016-12-29 15 views
3

私はElasticsearchデータベースへの接続がOKであるかどうか確認したいと思います。言い換えれば、私はElasticsearchにpingをしたいのです。以下のコードを実行すると、例外がスローされます。私は上記の方法を実行すると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() } 
     }; 
    } 

は、例外がスローされ、私はこのメッセージが表示されます。

クラスタ状態をスニッフィング失敗しました。

Elasticsearchへの接続が確立されているかどうかを確認するにはどうすればよいですか?

+1

ためPing方法を提供しますか? 'ConnectionSettings'に' .DisableDirectStreaming() 'を設定すると、クラスタ状態のスニッフィングが失敗する詳細が表示されます。 –

答えて

1

私は同じ問題を抱えており、SniffingConnectionPoolSingleNodeConnectionPoolに変更することでこれを解決することができました。

0

IElasticClientインタフェースは、この目的は、使用しているとあなたが反対Elasticsearchのどのバージョンを実行しているNESTのバージョンは何