使用jdbc连接ES6.3

ES6.3自带了sql查询,但是官网上的JDBC连接es6.3文档写的很马虎,本人实现后以作记录,首先安装官网安装ES6.3.

安装后先建立index

PUT /library/book/_bulk?refresh
{"index":{"_id": "Leviathan Wakes"}}
{"name": "Leviathan Wakes", "author": "James S.A. Corey", "release_date": "2011-06-02", "page_count": 561}
{"index":{"_id": "Hyperion"}}
{"name": "Hyperion", "author": "Dan Simmons", "release_date": "1989-05-26", "page_count": 482}
{"index":{"_id": "Dune"}}
{"name": "Dune", "author": "Frank Herbert", "release_date": "1965-06-01", "page_count": 604}

es的jdb jar

https://artifacts.elastic.co/maven/org/elasticsearch/plugin/jdbc/6.3.0/jdbc-6.3.0.jar


es的jdbc jar依赖

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-jdbc-with-dependencies-6.3.0.zip


代码如下


package com.es;

import java.sql.*;
import java.util.Properties;

/**
 * Created by Administrator on 2018/6/16 0016.
 */
public class EsSQL {
    public static void main(String args[]) throws SQLException {

        String driver = "org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcDriver";
        try {
            Class.forName(driver).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String address = "jdbc:es://127.0.0.1:9200";
        Properties connectionProperties = new Properties();
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(address, connectionProperties);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        Statement statement = connection.createStatement();
        ResultSet results = statement.executeQuery("SELECT * FROM library WHERE release_date < '2000-01-01';");
        while (results.next()) {
            System.out.println(results.getString(1));
        }

        //关闭资源
        results.close();
        statement.close();
        connection.close();


    }
}

 但是 还是会报错 ,报错信息如下

扫描二维码关注公众号,回复: 1717742 查看本文章


Exception in thread "main" java.sql.SQLInvalidAuthorizationSpecException: current license is non-compliant for [jdbc]
	at org.elasticsearch.xpack.sql.client.shared.JreHttpUrlConnection$SqlExceptionType.asException(JreHttpUrlConnection.java:306)
	at org.elasticsearch.xpack.sql.client.shared.JreHttpUrlConnection.parserError(JreHttpUrlConnection.java:183)
	at org.elasticsearch.xpack.sql.client.shared.JreHttpUrlConnection.request(JreHttpUrlConnection.java:158)
	at org.elasticsearch.xpack.sql.client.HttpClient.lambda$post$0(HttpClient.java:101)
	at org.elasticsearch.xpack.sql.client.shared.JreHttpUrlConnection.http(JreHttpUrlConnection.java:62)
	at org.elasticsearch.xpack.sql.client.HttpClient.lambda$post$1(HttpClient.java:100)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.elasticsearch.xpack.sql.client.HttpClient.post(HttpClient.java:99)
	at org.elasticsearch.xpack.sql.client.HttpClient.query(HttpClient.java:77)
	at org.elasticsearch.xpack.sql.jdbc.net.client.JdbcHttpClient.query(JdbcHttpClient.java:51)
	at org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcStatement.initResultSet(JdbcStatement.java:162)
	at org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcStatement.execute(JdbcStatement.java:153)
	at org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:42)
	at com.es.EsSQL.main(EsSQL.java:32)

是因为

 JDBC driver required a platinum license



猜你喜欢

转载自blog.csdn.net/zsj777/article/details/80715790