Elasticsearch7使用jdbc连接

Elasticsearch7.0.1 使用jdbc连接
项目中添加maven依赖
<repositories>  
<repository>  
<id>elastic.co</id>  
<url>https://artifacts.elastic.co/maven</url>  
</repository>  
</repositories>  
<dependency>  
  <groupId>org.elasticsearch.plugin</groupId>  
  <artifactId>x-pack-sql-jdbc</artifactId>  
  <version>7.0.1</version>  
</dependency>  
使用测试代码连接
package com.hts;  
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.util.Properties;  

public class ESJdbcTest {  

static String driver = "org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcDriver";  
static String elasticsearchAddress = "192.168.79.128:9200";  

public static Properties connectionProperties(){  
Properties properties = new Properties();  
        //如果集群设置了密码
        //properties.put("user", "test_admin");  
        //properties.put("password", "x-pack-test-password");  
return properties;  
}  
public static void main(String[] args) {  

String address = "jdbc:es://http://" + elasticsearchAddress;  
Properties connectionProperties = connectionProperties();  
try {
Connection connection = DriverManager.getConnection(address, connectionProperties);  
Statement statement = connection.createStatement();  
ResultSet results = statement.executeQuery(
"SELECT firstname, account_number FROM bank ORDER BY account_number DESC LIMIT 5");  
while(results.next()){  
System.out.println(results.getString("firstname"));  
}  
}catch (Exception e){  
e.printStackTrace();  
}  
 
}  

}  

异常:发现Exception in thread “main” java.sql.SQLInvalidAuthorizationSpecException: current license is non-compliant for [jdbc] 的错误需要破解xpth,更新白金许可;

  • 在/elasticsearch-7.0.1/modules/x-pack-core目录下找到x-pack-core-7.0.1.jar复制一份出来
  • 新建两个java文件分别命名为LicenseVerifier.java和XPackBuild.java,将下面代码黏贴
①:LicenseVerifier.java  
package org.elasticsearch.license;  
import java.nio.*;  
import org.elasticsearch.common.bytes.*;  
import java.util.*;  
import java.security.*;  
import org.elasticsearch.common.xcontent.*;  
import org.apache.lucene.util.*;  
import org.elasticsearch.core.internal.io.*;  
import java.io.*;  
public class LicenseVerifier{  
public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {  
return true;  
}  
public static boolean verifyLicense(final License license) {  
return true;  
}  
}  
②:XPackBuild.java  
package org.elasticsearch.xpack.core;
import org.elasticsearch.common.io.*;    
import java.net.*;  
import org.elasticsearch.common.*;  
import java.nio.file.*;  
import java.io.*;  
import java.util.jar.*;  
public class XPackBuild{  
public static final XPackBuild CURRENT;  
private String shortHash;  
private String date;  
@SuppressForbidden(reason = "looks up path of xpack.jar directly")  
static Path getElasticsearchCodebase() {  
final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();  
try {  
return PathUtils.get(url.toURI());  
}  
catch (URISyntaxException bogus) {  
throw new RuntimeException(bogus);  
} 
}  
XPackBuild(final String shortHash, final String date) {  
this.shortHash = shortHash;  
this.date = date;  
}  
public String shortHash() {  
return this.shortHash;  
}  
public String date() {  
return this.date;  
}  
static {  
final Path path = getElasticsearchCodebase();  
String shortHash = null;  
String date = null;  
Label_0157: {  
shortHash = "Unknown";  
date = "Unknown";  
}
CURRENT = new XPackBuild(shortHash, date);
}
}
  • 使用javac 编译这两个java文件,需要引入import的依赖,使用-cp参数(对应的jar包在elasticsearch安装包中都有)
javac -cp "F:\\es\\x-pack-core-7.0.1.jar;F:\\es\\lucene-core-8.0.0.jar;F:\\es\\elasticsearch-7.0.1.jar;F:\\es\\elasticsearch-core-7.0.1.jar"    F:\es\LicenseVerifier.java
javac -cp "F:\\es\\x-pack-core-7.0.1.jar;F:\\es\\lucene-core-8.0.0.jar;F:\\es\\elasticsearch-7.0.1.jar;F:\\es\\elasticsearch-core-7.0.1.jar"    F:\es\XPackBuild.java
  • 将编译生成的LicenseVerifier.class覆盖复制出来的x-pack-core-7.0.1.jar中目录org/elasticsearch/license下的LicenseVerifier.class,将生成的XPackBuild.class覆盖org/elasticsearch/xpack/core目录下的XPackBuild.class

  • 将覆盖成功后的x-pack-core-7.0.1.jar复制回/elasticsearch-7.0.1/modules/x-pack-core目录下覆盖原来的

  • 获取 license 证书
    ①:https://license.elastic.co/registration填些用户名,邮箱(重要,获取下载链接),Country选择China,其他信息随意填写,点击Send
    ②打开邮箱获取的地址,将下载后的文件改名为license.json


    ③修改文件中的内容,将两个属性改为以下
    将 “type”:“basic” 替换为 “type”:“platinum” # 基础班变更为铂金版
    将 “expiry_date_in_millis”:1561420799999替换为
    ④使用curl替换 license(license.json指的是刚刚下载修改属性后的证书,要开启elasticsearch服务)
    curl -XPUT ‘http://127.0.0.1:9200/_xpack/license?acknowledge=true’ -d @license.json
    在这里插入图片描述

    ⑤可能遇到Cannot install a [PLATINUM] license unless TLS is configured or security is disabled的错误,解决方法在elasticsearch.yml新增:
    xpack.security.enabled: false
    ⑥上传后查看证书时间http://127.0.0.1:9200/_license

    在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值