是否可以使用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/java/org/elasticsearch/cloud/cloud/transport/transport/example/transpleample/transportexample.java
这是您可以测试的实例。
我将稍后将其销毁。更新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一样容易。问题在于文档尚不清楚,并且没有链接到示例客户端。
我以前有相同的问题,我使用以下配置解决了它
所需的依赖项:
(运输和X-Pack-Transport应该具有相同的版本的Elasticsearch 5.5.3)
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.5.3</version>
</dependency>
<!--add the x-pack jar as a dependency-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>x-pack-transport</artifactId>
<version>5.5.3</version>
</dependency>
</dependencies>
<repositories>
<!-- add the elasticsearch repo -->
<repository>
<id>elasticsearch-releases</id>
<url>https://artifacts.elastic.co/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
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