13

AWS Elasticsearch サービス(EC2 ではない)を使用して Elasticsearch サーバーをセットアップしました。エンドポイントhttps://xxx-xxxxxxxx.us-west-2.es.amazonaws.com/が表示され、このエンドポイントをクリックすると (ポートが指定されていないことに注意してください)、期待される

{
  status: 200,
  name: "Mastermind",
  cluster_name: "xxxx",
  version: {
    number: "1.5.2",
    build_hash: "yyyyyy",
    build_timestamp: "2015-04-27T09:21:06Z",
    build_snapshot: false,
    lucene_version: "4.10.4"
  },
  tagline: "You Know, for Search"
}

問題は、ポート番号なしでelasticsearch Javaクライアントを介してこれを取得するにはどうすればよいですか? 私が得るサンプルコードは

Client client = TransportClient.builder().build()
    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300));

このコードを使用して「host1」をエンドポイントに置き換えると、「NoNodeAvailableException」が発生します。

ps: 私が使用している Java クライアントのバージョンは 2.0.0 です。

編集 最終的に、サードパーティの REST クライアントであるJestを使用することにしました。しかし、Brooks が以下で回答したことも非常に役立ちます。AWS は、http にポート 80 を使用し、https にポート 443 を使用します。私にとってのブロッカーは、私が推測するファイアウォールでした。

Edit2 AWS ES サービスのドキュメントには、明示的に次
のように記載されています。サービスはポート 80 で HTTP をサポートしていますが、TCP トランスポートはサポートしていません。

4

3 に答える 3