プロジェクトにAWSマネージドElasticSearchを使用しようとしています。
フォローしました https://aws.Amazon.com/blogs/aws/new-Amazon-elasticsearch-service/ インスタンスを開始でき、成功しました。しかし、elasticsearchトランスポートクライアントを使用して、サービスから同じインスタンスに接続できません。
トランスポートクライアントが9300ポートに接続することになっていることを知っていますが、そのポートはawsコンソールからオンにできません。
これが接続に使用しているコードです。これは、9300ポートのec2マシンでElasticSearchセットアップに正常に接続できます。
ImmutableSettings.Builder settings = ImmutableSettings.settingsBuilder();
settings.put("cluster.name", "my-cluster-name")
.put("client.transport.nodes_sampler_interval", "15s")
.put("client.transport.ping_timeout", "15s")
.put("client.transport.sniff", true)
.put("client.transport.ignore_cluster_name", false).build();
client = new TransportClient(settings)
.addTransportAddress(
new InetSocketTransportAddress(
env.getProperty("elastic-Host-url-provided-by-aws",80)
));
例外が発生します
org.elasticsearch.client.transport.NoNodeAvailableException:構成されたノードはどれも使用できません:[] at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.Java:305)atorg.elasticsearch.client.transport.TransportClientNodesService。 execute(TransportClientNodesService.Java:200)at org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.Java:106)at org.elasticsearch.client.support.AbstractClient.index(AbstractClient.Java:98)
このエラーは、HTTPポートを介してTransportClientに接続しているためだと思われます。しかし、awsマネージドエラスティック検索インスタンスのTCPポートは何ですか。awsドキュメントを検索しましたが、見つかりませんでした。TransportClientを使用してAmazonESに接続したことがある場合はお知らせください。
注意:使用しているelasticsearch Java jarバージョンがサーバーと同じであることを確認しました。システムから、KibanaとES HTTPPORTSにアクセスできます。問題を解決します。
TCP AWS Elasticsearch 5.xドメインのトランスポートのサポートがないことに関するドキュメントセクションを見つけることができます ここ :
TCPトランスポート
このサービスはポート80でHTTPをサポートしていますが、TCPトランスポートはサポートしていません。