2

組み込みの Elasticsearch を使用してクライアント (読み取り専用) ノードとして Elasticsearch クラスターに接続している Java アプリケーションがあります。elatiscsearch.yml ファイルで node.name プロパティを設定していません。Elasticsearch がこのノードにランダムに割り当てた名前を取得することは可能ですか? アプリケーションがステータス画面にノード名を表示できるように、Java API を介してこの情報を取得したいと考えています。

4

1 に答える 1

4

インスタンス化されている場合は、このように取得できると思いますorg.elasticsearch.node.Node

node.settings().get("name");

クラスター管理者の nodeStats 呼び出しから取得することもできます。これは、node/stats REST API から得られる結果を次のように反映します。

ActionFuture<NodesStatsResponse> nsr = client().admin().cluster().nodesStats(new NodesStatsRequest());
System.out.println(nsr.get().toString());

```

{
  "cluster_name" : "unitTest",
  "nodes" : {
    "1" : {
      "timestamp" : 1384212017873,
      "name" : "Naga",
      "transport_address" : "local[1]",
      "hostname" : "marks-Latitude-E6510",
      "attributes" : {
        "http.enabled" : "false",
        "local" : "true"
      },
      "indices" : {
         .... blah blah blah
      }
    }
  }
}

```

于 2013-11-11T23:14:27.467 に答える