如何在 Java 客户端中使用用户名和密码(无 SSL)连接到 Elasticsearch?

How to use username and password (no SSL) in Java client to connect to Elasticsearch?

我正在学习 Elasticsearch (6.1.3),以便在基于 Java 的 Web 应用程序中使用它。

我已经安装了X-Pack。现在我需要知道如何通过简单地提供用户名和密码而不使用 SSL 在 Java 客户端中进行编程。我发现此页面很有帮助,但缺少:

https://www.elastic.co/guide/en/x-pack/current/java-clients.html

我对上面找到的以下代码片段特别感兴趣link:

TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
        .put("cluster.name", "myClusterName")
        .put("xpack.security.user", "transport_client_user:changeme")
        ...
        .build())
    .build()
    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300))
    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9301))

String token = basicAuthHeaderValue("test_user", new SecureString("changeme".toCharArray()));

client.filterWithHeader(Collections.singletonMap("Authorization", token))
    .prepareSearch().get();

此代码片段是否适用于我的情况?密码在哪里?

我在谷歌上搜索了很多,但找不到一个完整的例子。如果能提供任何信息或 links.

,我将不胜感激

根据关于将传输客户端配置为与安全 ES 集群一起工作的 XPack documentation,您关心的是这一行:

    .put("xpack.security.user", "transport_client_user:changeme")

在那里你可以看到你有一个用户名 (transport_client_user) 和一个密码 (changeme),所以你很高兴。