2016-12-23 58 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