在哪里设置方解石elasticsearch用户名/密码?

问题描述

我正在尝试使用Apache Calcite连接到ElasticSearch,并且在设置用户名密码时遇到问题。

我尝试使用operand(基于JSON),Properties(DriverManager.getConnection(String url,Properties config))和DriverManager.getConnection(String url,username,password)来配置用户名/密码,但是却无法获取其中任何一个工作。

我以前已将问题发布到Apache JIRA

我的代码如下

尝试使用属性设置用户名密码

Properties config = new Properties();
config.put("lex","JAVA");
String sql = "select * from index";

try (Connection con = DriverManager.getConnection("jdbc:calcite:model=src/main/resources/es.json",config)) {
    try (Statement stmt = con.createStatement()) {
        try (ResultSet rs = stmt.executeQuery(sql)) {
            printRs(rs);
        }
    }
}

尝试使用操作数进行设置

{
  "version": "1.0","defaultSchema": "elasticsearch","schemas": [
    {
      "type": "custom","name": "elasticsearch","factory": "org.apache.calcite.adapter.elasticsearch.ElasticsearchSchemaFactory","operand": {
        "coordinates": "{'192.168.133.104': 9200}","jdbcUser": "elastic","jdbcPassword": "elastic"
      }
    }
  ]
}

并引发异常

{
    "error":{
        "root_cause":[
            {
                "type":"security_exception","reason":"missing authentication token for REST request [/_alias]","header":{
                    "WWW-Authenticate":"Basic realm="security" charset="UTF-8""
                }
            }
        ],"type":"security_exception","header":{
            "WWW-Authenticate":"Basic realm="security" charset="UTF-8""
        }
    },"status":401
}

解决方法

在提出此问题时这是不可能的,但是此功能has since been added将包含在下一版本的Calcite(1.26.0)中。除了配置中的coordinates键之外,您还可以添加usernamepassword以指定身份验证参数。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...