2016-12-23 126 views
3

我使用AWS Elasticsearch Java API指向AWS ElasticsearchClient集羣並確定集羣中是否存在索引?AWS JAVA ElasticsearchClient集羣和索引查找

1編輯:

下面是如何指向羣集:

String endpoint = "search-name-ppb6tuag3s4srci5qwou6eumru.us-region-x.es.amazonaws.com"; 
es_client = new AWSElasticsearchClient(new BasicAWSCredentials(key,secret), clientConfig);  
es_client.setEndpoint(endpoint); 

2編輯:

AWS彈性文檔指向彈性elastic.co API。而elastic.co API引用了它們的傳輸API:

client = TransportClient.builder().settings(settings).build(); 
client.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(endpoint,9300))); 

但是!!! AWS ES引擎不支持傳輸9300端點,因此決定使用Java HTTP Resp API代替。我當然希望AWS的文檔更加明確,我已經花了很多時間來解決這個問題。

+0

這個庫只能用於配置亞馬遜Elasticsearch,也就是說,它的配置API來創建,配置,並管理Elasticsearch域,但不能與Elasticsearch交互。爲此,現有的答案提供了一個解決方案。 – Val

+0

@val:我想我必須使用AWSElasticsearchClient,因爲AWS認證。如果使用org.elasticsearch.client.Client庫,您是否知道我將如何使用AWS進行身份驗證? – user2917629

回答

-1

您可以使用客戶端管理界面,檢查是否有名稱的索引INDEX_NAME存在或不同步

boolean exists = client.admin().indices() 
    .prepareExists(INDEX_NAME) 
    .execute().actionGet().isExists(); 
+0

我試過用2.3 elasticsearch庫創建客戶端,但沒有運氣,只是出現錯誤「沒有配置的節點可用」,我認爲它必須是身份驗證問題,所以我開始尋找AWS而不是。 – user2917629

+0

您可以使用基本捲曲從您的本地盒子訪問您的elasticsearch集羣嗎?此外,請檢查您是否可以通過端口9300在AWS框上telnet – Rahul

+0

我可以在本地執行卷曲以獲取AWS彈性體的健康檢查信息。我一直在嘗試9300和80.要運行curl,我必須在沒有端口引用的情況下執行。 – user2917629