使用Java客户端和X-Pack / HTTPS连接到ElasticSearch Cloud 5.x.
是否可以使用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", "") .put("xpack.security.transport.ssl.enabled", "true") .put("xpack.security.user", "elastic:") .build(); String hostname = ".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}{.us-east-1.aws.found.io}{:9343}]]
我还尝试使用transport_client角色创建用户,但仍然是同样的错误。
更新2
我从这里尝试了示例代码,它仍然无效。
https://github.com/elastic/found-shield-example/blob/master/src/main/java/org/elasticsearch/cloud/transport/example/TransportExample.java
这是您可以测试的实例。 在我弄清楚这个问题之后,我会把它毁掉。
更新3
我找出了问题并破坏了测试集群。 找到下面的解决方案。
经过与ES论坛上的人们的一些讨论,我终于得到了它。 当您遇到连接问题时,以下是一些提示:
1)您可能没有在标题中添加它,因为文档中没有提到它
.put("request.headers.X-Found-Cluster", clusterName)
2)如果仍然无效,请使用此处的示例代码validation您的主机名是否正确并且您拥有正确的凭据
https://github.com/elastic/found-shield-example#running
3)如果您尝试在Eclipse中运行示例代码,请在运行之前替换$ {cluster.name},否则它将无效。
希望这有助于节省人们一些时间来解决连接问题。 连接到ES 5.x几乎和2.x一样简单。 问题是文档不清楚,并且没有到示例客户端的链接。
之前我有同样的问题,我使用以下配置解决了它
必需的依赖项:
(transport和x-pack-transport应该具有相同版本的elasticsearch 5.5.3)
org.springframework.data spring-data-elasticsearch 3.0.5.RELEASE org.elasticsearch.client transport 5.5.3 org.elasticsearch.client x-pack-transport 5.5.3 elasticsearch-releases https://artifacts.elastic.co/maven true false
Java配置:
@Value("${elasticsearch.cluster.url}") private String elasticsearchClusterUrl; @Value("${elasticsearch.cluster.port}") private int elasticsearchClusterPort; @Value("${elasticsearch.cluster.name}") private String elasticsearchClusterName; @Value("${elasticsearch.cluster.credentials}") private String elasticsearchCredentials; @Bean public TransportClient elasticsearchClient() throws Exception { Settings settings = Settings.builder() .put("cluster.name", elasticsearchClusterName) .put("request.headers.X-Found-Cluster", elasticsearchClusterName) .put("xpack.security.transport.ssl.enabled", true) .put("xpack.security.user", elasticsearchCredentials) .build(); return new PreBuiltXPackTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(elasticsearchClusterUrl, elasticsearchClusterPort))); }
application.yml:
elasticsearch: index: dev_index cluster: name: 2083ddf0fbf5a3b1f0c50ff257ded077 url: 2083ddf0fbf5a3b1f0c50ff257ded077.eu-west-1.aws.found.io port: 9343 credentials: elastic:pass
- elasticsearch NodeBuilder与TranportClient
- Elasticsearch – EdgeNgram + highlight + term_vector =错误的亮点
- Elasticsearch安装:错误’jvm.dll错过’服务器’JVM
- ElasticSearch全文搜索
- 如何在Spring-data-elasticsearch中启用查询日志记录
- 使用Spring-Data Elasticsearch在Elasticsearch中动态创建索引名称
- 在弹性搜索高级客户端中为JAVA添加身份validation
- elasticsearch java API:matchAll搜索查询不返回结果?
- 自动将ElasticSearch与SQL同步