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 トランスポートはサポートしていません。