2015-05-20 7 views
5

Witam Próbuję połączyć mojego klienta ElasticSearch z moim localhostem i próbując pobrać z niego indeksy.ElasticSearch daje ReceiveTimeoutTransportException

import org.elasticsearch.action.get.GetResponse; 
import org.elasticsearch.client.Client; 
import org.elasticsearch.node.Node; 
import org.elasticsearch.client.transport.*; 
import org.elasticsearch.common.transport.*; 
import java.io.IOException; 
import static org.elasticsearch.node.NodeBuilder.nodeBuilder; 
public class ESClient 
{ 
    public static void search()throws IOException 
    { 
     Node node; 
     node = nodeBuilder().clusterName("elasticsearch").node(); 
     Client client; 
     client= new TransportClient() 
       .addTransportAddress(new InetSocketTransportAddress("localhost", 9200)); 
     GetResponse response; 
     response= client.prepareGet("twitter", "tweet", "1").execute() .actionGet(); 
     System.out.println(response.toString()); 

    } 
    public static void main(String args[])throws IOException 
    { 
     search(); 

    } 

} 

Stworzyłem indeksy za pomocą terminala.

curl -XPUT 'http://localhost:9200/twitter/' curl -XPUT 'http://localhost:9200/twitter/_mapping/tweet' -d '{
"tweet": { "Właściwości": {
"message": { "type": "string" "sklep": true} }
}} '

Kiedy ja je wykonuje następujący błąd jest generowany,

NFO: [Blackheath] nie udało się uzyskać informacji na węzła transportowego # [# 1] [BLRMCB-C02L56J4DR53.local] [inet [localhost/127.0.0.1: 9200]], odłączeniowej ... org. Elasticsearch.transport.ReceiveTimeoutTransportException: [] [inet [localhost/127.0.0.1: 9200]] [klaster: monitor/węzły/informacje] request_id [0] przekroczono limit czasu po [5002ms] w org.elasticsearch.transport.TransportService $ TimeoutHandler.run (TransportService.java:366) na java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) na java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) w ja va.lang.Thread.run (Thread.java:745)

Wyjątek nici "głównym" org.elasticsearch.client.transport.NoNodeAvailableException: Żadne skonfigurowane węzły są dostępne: [] na Org. elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable (TransportClientNodesService.java:278) w org.elasticsearch.client.transport.TransportClientNodesService.execute (TransportClientNodesService.java:197) w org.elasticsearch.client.transport.support. InternalTransportClient.execute (InternalTransportClient.java:106) pod adresem org.elasticsearch.client.support.AbstractClient.get (AbstractC lient.java:193) w org.elasticsearch.client.transport.TransportClient.get (TransportClient.java:384) w org.elasticsearch.action.get.GetRequestBuilder.doExecute (GetRequestBuilder.java:201) w org.elasticsearch.action.ActionRequestBuilder.execute (ActionRequestBuilder.java:91) na org.elasticsearch.action.ActionRequestBuilder.execute (ActionRequestBuilder.java:65) w .... ESClient.search (ESClient.java: 30) w .... ESClient.main (ESClient.java:36) w sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) przy sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) pod sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) w java.lang.reflect.Method.invoke (Method.java: 497) pod adresem com.intellij.rt.execution.application.AppMain.main (AppMain.java: 140)

Co to jest problem, czy ktoś może mi powiedzieć?

Odpowiedz

0

Wystąpił ten błąd, gdy zmieniłem z używania ElasticSearchAdapter dla kwerend do SparkStreamingAdapter dla tych samych kwerend. Musiałem zmienić port na 9300, a następnie ten błąd się nie pojawił.

To pytanie/odpowiedź pomogło mi ustalić: Why can't I connect to ElasticSearch through Java API?