一尘不染

使用Java客户端和X-Pack / HTTPS连接到ElasticSearch Cloud 5.x

elasticsearch

是否可以使用X-
Pack通过HTTPS连接到ElasticSearch?切换为使用证书后,自己的连接方式不再起作用。我使用证书没有问题,但是我需要知道从哪里获得证书或将密钥上传到云实例,但是我无法在任何地方找到信息。我也没有收到论坛或IRC中任何人的答复。

有人成功做到了吗?启动5.x实例时不再有警告,因此我认为这是可能的,但是我只是不知道该怎么做。还告诉我,我无法再启动2.4.1实例,并且只有2.4.2可用(到目前为止太不稳定了),所以我有点无法启动可用实例。


更新资料

有人告诉我,因为使用了公共CA,所以不需要证书。但是,我仍然无法弄清楚如何连接到5.1.1实例。

Settings settings = Settings.builder()
            .put("transport.ping_schedule", "5s")
            .put("cluster.name", "<cluster_id>")
            .put("xpack.security.transport.ssl.enabled", "true")
            .put("xpack.security.user", "elastic:<password_from_cluster_creation>")
            .build();

    String hostname = "<cluster_id>.us-east-1.aws.found.io";
    TransportClient client = new PreBuiltXPackTransportClient(settings)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostname), 9343));

我在这里做错了什么?我收到一条错误消息,指出节点不可用。

Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{xlhZqKBCQniYrN4OWzByFQ}{<cluster_id>.us-east-1.aws.found.io}{<id_address>:9343}]]

我也尝试创建一个具有transport_client角色的用户,但仍然是相同的错误。


更新2

我从这里尝试了示例代码,但仍然无法正常工作。

https://github.com/elastic/found-shield-
example/blob/master/src/main/java/org/elasticsearch/cloud/transport/example/TransportExample.java

这是一个您可以测试的实例。在找出问题之后,我将销毁它。


更新3

我发现了问题并破坏了测试集群。在下面找到解决方案。


阅读 1005

收藏
2020-06-22

共1个答案

一尘不染

在ES论坛上与人们讨论后,我终于开始工作了。当您遇到连接问题时,以下是一些提示:

1)您可能没有在标头中添加它,因为在文档中没有提到它

.put("request.headers.X-Found-Cluster", clusterName)

2)如果仍然无法使用,请使用此处的示例代码来验证您的主机名正确并且您具有正确的凭据

https://github.com/elastic/found-shield-
example#running

3)如果您试图在Eclipse中运行示例代码,请在运行$ {cluster.name}之前将其替换掉,否则它将无法正常工作。

希望这可以帮助人们节省一些时间来解决连接问题。连接到ES 5.x几乎就像2.x一样简单。问题在于文档不清晰,并且没有指向示例客户端的链接。

2020-06-22