是否可以使用 X-Pack 通过 HTTPS 连接到 ElasticSearch?改用证书后,自己的连接方式就不行了。我对使用证书没问题,但我需要知道从哪里获得证书或将 key 上传到云实例,但我无法在任何地方找到信息。我也没有从论坛或 IRC 中的任何人那里得到任何答复。
有人成功过吗?启动 5.x 实例时不再有警告,所以我认为这是可能的,但我就是不知道该怎么做。我还被告知我无法再启动 2.4.1 实例并且只有 2.4.2 可用(到目前为止太不稳定)所以我有点无法启动可用实例。
更新
我被告知不需要证书,因为正在使用公共(public) 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
我尝试了此处的示例代码,但仍然无法正常工作。
这是一个您可以用来测试的实例。待我弄清楚问题后,我会销毁它。
更新 3
我弄清楚了问题并销毁了测试集群。在下面找到解决方案。
最佳答案
在 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 一样简单。问题是文档不清晰,也没有指向示例客户端的链接。
关于java - 使用 Java 客户端和 X-Pack/HTTPS 连接到 ElasticSearch Cloud 5.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40981855/