Elasticsearch6.3开始执行sql,可以和使用数据库一样的CRUD进行操作elasticsearch,连接过程如下(安装下载Elasticsearch略):

一:项目中添加maven依赖

<repositories>
<repository>
<id>elastic.co</id>
<url>https://artifacts.elastic.co/maven</url>
</repository>
</repositories> <dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>jdbc</artifactId>
<version>6.3.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 = "127.0.0.1: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,更新白金许可。

(一)在D:\elasticsearch-6.3.0\modules\x-pack\x-pack-core目录下找到x-pack-core-6.3.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参数,需要依赖原本的x-pack-core-6.3.1.jar,lucene-core-7.3.1.jar,elasticsearch-6.3.0.jar,elasticsearch-core-6.3.0.jar这四个java包(windows下使用分号分隔jar路径,linux下使用冒号分隔,后三个jar包的路径为D:\elasticsearch-6.3.0\lib)
```
javac -cp "x-pack-core-6.3.0.jar路径;lucene-core-7.3.1.jar路径;elasticsearch-6.3.0.jar路径;elasticsearch-core-6.3.0.jar路径" LicenseVerifier.java路径
javac -cp "x-pack-core-6.3.0.jar路径;lucene-core-7.3.1.jar路径;elasticsearch-6.3.0.jar路径;elasticsearch-core-6.3.0.jar路径" XPackBuild.java路径

(四)将编译生成的LicenseVerifier.class覆盖复制出来的x-pack-core-6.3.0.jar中目录org/elasticsearch/license下的LicenseVerifier.class,将生成的XPackBuild.class覆盖org/elasticsearch/xpack/code目录下的XPackBuild.class。
(五)将覆盖成功后的x-pack-core-6.3.0.jar复制回D:\elasticsearch-6.3.0\modules\x-pack\x-pack-core目录下覆盖原来的。
(六)获取 license 证书
①:https://license.elastic.co/registration填些用户名,邮箱(重要,获取下载链接),Country选择China,其他信息随意填写,点击Send
![](https://images2018.cnblogs.com/blog/986140/201807/986140-20180709095709379-1289306865.png)
②打开邮箱获取的地址,将下载后的文件改名为license.json
③修改文件中的内容,将两个属性改为以下

将 "type":"basic" 替换为 "type":"platinum" # 基础班变更为铂金版

将 "expiry_date_in_millis":1561420799999替换为 "expiry_date_in_millis":3107746200000# 1年变为50年

④使用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
![](https://images2018.cnblogs.com/blog/986140/201807/986140-20180709100408657-1370449805.png) ##四:至此可以使用jdbc连接
![](https://images2018.cnblogs.com/blog/986140/201807/986140-20180709100505205-1367332619.png)

Elasticsearch6.3 使用jdbc连接的更多相关文章

  1. 使用JDBC连接ElasticSearch6.3(ElasticSearch SQL JDBC)

    使用JDBC连接ElasticSearch6.3(ElasticSearch SQL JDBC) https://blog.csdn.net/scgaliguodong123_/article/det ...

  2. JDBC连接SQL Server代码模板

    *                  JDBC连接SQL Server数据库 代码模板* Connection: 连接数据库并担任传送数据的任务:* Statement :  执行SQL语句:* Re ...

  3. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  4. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  5. Field 'id' doesn't have a default value(jdbc连接错误)

    JDBC 连接错误: 编写数据库连接增添数据时,出现以下错误: error : java.sql.SQLException: Field 'id' doesn't have a default val ...

  6. JDBC连接MySQL 方法 实例及资料收集

    JDBC连接MySQL 方法 实例及资料收集 准备工作 首先,安装MySQL,配置用户名和密码,创建数据库. 可参见之前的文章: http://www.cnblogs.com/mengdd/p/315 ...

  7. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  8. Java使用JDBC连接MySQL数据库

    1.引用 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...

  9. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

随机推荐

  1. 【第十周】四则运算GUI

    下载地址:http://pan.baidu.com/s/1hsc9HRm 这次比上次多了一个记录的功能,是用QT里面的qplaintextedit记录显示出做过的题目. 我是直接看的文档,发现窗体,搜 ...

  2. sklearn-特征工程之特征选择

    title: sklearn-特征工程之特征选择 date: 2016-11-25 22:49:24 categories: skearn tags: sklearn --- 抄袭/参考资料 使用sk ...

  3. mybatis映射文件的使用(一),工程目录结构、源代码和数据库

    代码开发环境 开发工具为IDEA 工程构建方式为maven 数据库为mysql 5.7.20 mybatis版本为 3.1.1 mysql-connect-java jar包版本为 5.1.34 数据 ...

  4. codeforces 1041 E.Vasya and Good Sequences(暴力?)

    E. Vasya and Good Sequences time limit per test 2 seconds memory limit per test 256 megabytes input ...

  5. BZOJ3444 最后的晚餐(并查集)

    容易发现只要图中有非链部分则无解.剩下就非常简单了. #include<iostream> #include<cstdio> #include<cmath> #in ...

  6. 【Cf #503 C】Sergey's problem(有趣的构造)

    感觉这种构造题好妙啊,可我就是想不到诶. 给出一张无自环的有向图,回答一个独立集,使得图中任意一点都可以被独立集中的某一点两步之内走到. 具体构造方案如下: 下标从小到大枚举点,如果该点没有任何标记, ...

  7. 【bzoj4804】欧拉心算 解题报告

    [bzoj4804]欧拉心算 Description 给出一个数字\(N\),计算 \[\sum_{i=1}^n\sum_{j=1}^n \varphi(\gcd(i,j))\] Input 第一行为 ...

  8. 栈(C语言实现)

    栈是一种线性数据结构,顺序可能是 LIFO(后进先出)或 FILO(先进先出). 堆栈主要有三个基本操作: 1.push,把元素压入栈 2.pop,从栈中弹出元素(同时从栈中移除),最后加入的第一个被 ...

  9. windows下Python三步安装pip

    pip是用来方便地管理Python的第三方包的,由于此前玩Python仅仅是浅尝辄止,用的是python(x,y),但是这里并不代表你想用什么包都能从里面找到的,所以我把python(x,y)卸了,然 ...

  10. 压缩前端文件(html, css, js)

    1:原因 在写前端代码时, 因为要尽可能的适合阅读会加入许多注释, 空格等, 这些在开发时是必要的, 但当你要发布时, 就需要让代码更加精简, 精简压缩的同时也混淆了代码, 安全性也加强了, 可以说是 ...