【问题标题】:How to use username and password (no SSL) in Java client to connect to Elasticsearch?如何在 Java 客户端中使用用户名和密码(无 SSL)连接到 Elasticsearch?
【发布时间】:2018-02-06 00:53:38
【问题描述】:

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

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

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

我对上面链接中找到的以下代码sn-p特别感兴趣:

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();

此代码 sn-p 是否适用于我的情况?密码在哪里?

我搜索了很多,但找不到一个完整的示例。对于任何信息或链接,我将不胜感激。

【问题讨论】:

    标签: elasticsearch java-client elasticsearch-x-pack


    【解决方案1】:

    根据XPack documentation 配置传输客户端以使用安全的 ES 集群,您关心的线路是这样的:

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

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

    【讨论】:

    • 瓦尔,感谢您的帮助。我测试了它并且它有效。我看到那行,不确定用户名和密码是否应该放在同一个位置,用冒号分隔。
    • 很高兴它有帮助!
    • 如果我点击 localhost:9200/_xpack/security/user 我只看到 3 个用户 elastic/kibana/logstash_system
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2019-10-23
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 2021-11-16
    相关资源
    最近更新 更多