如何从Java应用程序连接到Heroku上的Bonsai ElasticSearch

时间:2018-12-16 21:33:39

标签: java elasticsearch heroku bonsai-elasticsearch

我有一个Java应用程序,该应用程序正在使用ElasticSearch API连接到Heroku上的Bonsai。将我的应用程序部署到Heroku之后,我发现不可能通过TransportClient连接到传统的ElasticSearch地址127.0.0.1:9300

因此,在阅读答案here之一后,我将TransportAddress更改为以下地址。

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
                    .addTransportAddress(new TransportAddress(InetAddress.getByName("http://juniper-325345373.eu-west-1.bonsaisearch.net/"), 80)); 

但是现在我得到了java.net.UnknownHostException: http://juniper-325345373.eu-west-1.bonsaisearch.net/: Name or service not known

我应该如何正确定义地址才能连接到Bonsai ElasticSearch?

1 个答案:

答案 0 :(得分:1)

我在盆景的网站上找到了非常有用的链接。 https://docs.bonsai.io/article/278-java

1。从URI中提取您的帐户数据

例如https://a1b2c3d4e:5f6g7h8i9@somehost-1234567.region-x-y.bonsaisearch.net

String username = a1b2c3d4e;
String password = 5f6g7h8i9;

2。提取主机地址

String host = somehost-1234567.region-x-y.bonsaisearch.net;
String port = 443;

更多信息可以在这里找到:https://docs.bonsai.io/article/94-connecting-to-bonsai

3。实施凭据提供商

  CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
  credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));

4。实施 RestHighLevelClient 以连接盆景

RestHighLevelClient restClient = new RestHighLevelClient(
        RestClient.builder(new HttpHost(host,port,"https"))
           .setHttpClientConfigCallback(httpAsyncClientBuilder -> 
    httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
                       .setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy())));`