web-dev-qa-db-fra.com

Client Elastic Transport sur AWS Managed ElasticSearch

J'essaie d'utiliser AWS ElasticSearch géré pour mon projet.

J'ai suivi https://aws.Amazon.com/blogs/aws/new-Amazon-elasticsearch-service/ et je suis en mesure de démarrer une instance et qui est réussie. Mais je ne parviens pas à me connecter à la même instance à partir de mon service à l'aide du client de transport elasticsearch.

Je sais que le client de transport est censé se connecter au port 9300 et que ce port ne peut pas être activé via la console aws. 

Voici le code que j'utilise pour me connecter, ce qui permet de me connecter à mon système de recherche élastique sur une machine ec2 sur le port 9300.

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)
                            ));

Je reçois l'exception

org.elasticsearch.client.transport.NoNodeAvailableException: aucun des nœuds configurés n'est disponible: [] à org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable (TransportClient NodesService.Java:30) .____.] à org.elasticsearch.client.transport.TransportClientNodesService.execute (TransportClientNodesService.Java:200) à org.elasticsearch.client.transport.transport.transport.support.InternalTransportClient .execute (InternalTransportClient.Java:106) à org.elasticsearch.client.support.AbstractClient.index (AbstractClient.Java:98)

Je soupçonne que cette erreur se produit car je connecte le TransportClient via le port HTTP. Mais je ne sais pas quel est le port TCP de l'instance de recherche élastique gérée par aws. J'ai cherché dans les documents aws et je n'ai trouvé aucun document. Si certains ont utilisé TransportClient pour se connecter à Amazon ES, faites-le moi savoir.

Remarque: j'ai vérifié que la version du fichier jar Java d'elasticsearch que j'utilise Est identique à celle du serveur. Et à partir de mon système, je peux Accéder à Kibana et à ES HTTP PORTS sans aucun problème.

14
Ysak

Forum lié à AWS link .

Ici sont les restrictions pour le service AWS ElasticSearch:

Transport TCP Le service prend en charge HTTP sur le port 80, mais Ne prend pas en charge TCP.

16
Matt

La section de documentation sur le support manquant pour TCP transport pour les domaines AWS Elasticsearch 5.x peut être trouvée ici :

TCP transport

Le service prend en charge HTTP sur le port 80, mais ne prend pas en charge le transport TCP.

1
Roger Suen