在哪里设置方解石elasticsearch username/password?

Where to set calcite elasticsearch username/password?

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

我尝试使用 operand(基于 JSON)、属性(DriverManager.getConnection(String url, Properties config))和 DriverManager.getConnection(String url, username, password) 配置 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",
        "reason":"missing authentication token for REST request [/_alias]",
        "header":{
            "WWW-Authenticate":"Basic realm="security" charset="UTF-8""
        }
    },
    "status":401
}

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