9

sto cercando di connettersi a AWS elasticsearch ma ho sempre ottenere il seguente errore:Come connettersi ad AWS Elasticsearch?

Exception in thread "main" org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [] 
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:278) 
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:197) 
at org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106) 
at org.elasticsearch.client.support.AbstractClient.index(AbstractClient.java:98) 
at org.elasticsearch.client.transport.TransportClient.index(TransportClient.java:334) 
at org.elasticsearch.action.index.IndexRequestBuilder.doExecute(IndexRequestBuilder.java:313) 
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:91) 
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:65) 
at com.c_backendcrawler.utility.ElasticSearch.uploadObject(ElasticSearch.java:25) 
at com.c_backendcrawler.Start.main(Start.java:34) 

Il mio codice è il seguente:

//Create Client 
    Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "zencubes-search").put("node.name","Darkhawk").build(); 
    TransportClient transportClient = new TransportClient(settings); 
    transportClient.addTransportAddress(new InetSocketTransportAddress(
      "x.x.x.x",9300)); 
    return transportClient; 

uscita da AWS elasticsearch:

{ 
status: 200, 
name: "Darkhawk", 
cluster_name: "817880037706:zencubes-search", 
version: { 
number: "1.5.2", 
build_hash: "62ff9868b4c8a0c45860bebb259e21980778ab1c", 
build_timestamp: "2015-04-27T09:21:06Z", 
build_snapshot: false, 
lucene_version: "4.10.4" 
}, 
tagline: "You Know, for Search" 
} 

Ho provato ad arricciare (https://search-zencubes-search-xxxxxxxx.eu-west-1.es.amazonaws.com/) e funziona - ma non sulla porta 9300. Cosa sto facendo male qui?

+0

La porta 9300 è aperta su quell'istanza AWS? – lmyers

+0

non è aperto - ma penso di aver cercato tutto e non ho trovato un'impostazione per cambiarlo - non so se aws usa una porta predefinita diversa. Ah e sto usando il servizio aws elasticsearch - non un'istanza ec2 configurata manualmente –

+0

Sembra che potrebbe essere necessario configurare un criterio di accesso: http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide /es-gsg.html – lmyers

risposta

2

Since the Elasticsearch Java SDK version 5.6 c'è un REST Client disponibili. Ciò ti consente di collegarti a Elasticsearch Service su AWS.

Attualmente Elasticsearch Service consente installazioni fino alla versione 5.5, ma è possibile utilizzare l'SDK Java 5.6 su un cluster 5.5 con limitazioni minori.

Nota: durante l'inizializzazione del RestClient si dovrebbe utilizzare la porta 80 o 443, rispettivamente, al posto del 9200. Per esempio.

RestClient restClient = RestClient.builder(
    new HttpHost("search-test-elasti-xxxx-xxxxx.us-east-1.es.amazonaws.com", 80, "http")).build(); 
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClient); 
// [...] 
+0

come si firma la richiesta? – user3100209