Elasticsearch Rest Client – ConnectionClosedException lors de l’appel de performRequestAsync

J’ai un problème sur HttpAsyncRequestExecutor.

J’utilise elasticsearch Java Rest Client et je reçois toujours une performRequestAsync ConnectionClosedException (voir ci-dessous) lorsque j’appelle performRequestAsync :

  // variables (all with valid format): // endpoint is just a List with "14655/_search" // params is just a Map with // "pretty", "true" // "search_type", "query_then_fetch" // entity is just a HttpEntity entity with the Json body request final int numRequests = endpoints.size(); final CountDownLatch latch = new CountDownLatch(numRequests); try (Timer.Context ctx = this.requestTimer.time()) { for (final Ssortingng endpoint : endpoints) { // ERROR hapens here: restClient.performRequestAsync("GET", endpoint, params, entity, new ResponseListener() { @Override public void onSuccess(final Response response) { if (response != null) { responses.add(response); latch.countDown(); } } @Override public void onFailure(final Exception exception) { latch.countDown(); logger.error("could not get search results for....",exception); exception.printStackTrace(); } }); } } 

Exception ici:

 org.apache.http.ConnectionClosedException: Connection closed at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput(HttpAsyncRequestExecutor.java:341) at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:263) at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81) at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39) at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:116) at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:164) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:339) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:317) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:278) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:590) at java.lang.Thread.run(Thread.java:745) 

Je ne sais pas quelle est la véritable cause de la fermeture de la connexion. La même demande fonctionne correctement dans kopf et renvoie des résultats de recherche valides. De plus, je n’appelle pas restClient.close() ou quelque chose de similaire.

Des idées où le problème pourrait être? La fin de l’entrée est-elle à l’origine d’un état de connexion fermé (selon org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput(conn) )? Si oui, quel est cet apport?

Merci

METTRE À JOUR:

Je soupçonne que le problème est lié à HttpClient de Tomcat, car ce code fonctionne correctement dans un test d’intégration (c’est-à-dire, renvoie des résultats) … Mais cela ne fonctionne pas (obtenez la même ConnectionClosedException ) “interface”

Des lumières sur ça?

Le problème était que le port était faux. Pour les demandes REST, le port doit être 9200 (et non 9300 comme il a été configuré). Plus d’infos sur les ports elasticsearch.

Je souhaite qu’elasticsearch puisse créer un journal d’erreur plus explicite ou un indice comme “connectez-vous avec le bon port?” pour quand on essaie d’accéder au port 9300 avec autre chose que les clients intégrés.