bash
# 创建一个新的Docker网络
docker network create elastic
# 拉取Elasticsearch Docker镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:9.3.3
# 创建一个Elasticsearch容器(官网给的示例报错,我用自己修改后的)
docker run -d \
--name es01 \
--net elastic \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
-e "xpack.security.enabled=false" \ # 关闭安全认证功能,即不需要用户名和密码
-v esdata:/usr/share/elasticsearch/data \
-m 2GB \
docker.elastic.co/elasticsearch/elasticsearch:9.3.3
# 验证安装
curl http://localhost:9200
# 返回如下结果,表示安装成功
{
"name" : "f35babe8bf51",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "MyxSnwd_RYOCsyKpjbByjQ",
"version" : {
"number" : "9.3.3",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "640408e2dfd2af9fbfe5079e1575f93d8909a5f5",
"build_date" : "2026-04-01T22:08:18.783399214Z",
"build_snapshot" : false,
"lucene_version" : "10.3.2",
"minimum_wire_compatibility_version" : "8.19.0",
"minimum_index_compatibility_version" : "8.0.0"
},
"tagline" : "You Know, for Search"
}
通过DBeaver连接ES,报错:
bash
SQL 错误: current license is non-compliant for [jdbc]
current license is non-compliant for [jdbc]
出现以上问题,主要是:当前的 Elasticsearch 许可证(License)不支持 JDBC 连接。简单来说,Elasticsearch 的免费版(Basic License)默认是不允许通过 JDBC(也就是 DBeaver 这种 SQL 工具)来查询数据的。这是 Elastic 官方为了区分付费功能(Platinum/Gold)而设置的限制。
不过,因为是在本地 Docker 环境,可以通过开启 30 天全功能试用(Trial)来解决这个问题。
发送激活命令。请在电脑终端(或者 DBeaver 的 SQL 编辑器里执行 HTTP 请求,如果支持的话)运行以下 curl 命令:
bash
# 发送激活命令
curl -X POST "http://localhost:9200/_license/start_trial?acknowledge=true"
# 如下, ES 现在已经升级为 Trial(试用版) 状态,拥有了包括 JDBC 在内的所有高级功能权限
{
"acknowledged" : true,
"trial_was_started" : true,
"type" : "trial"
}
回到DBeaver,重新连接即可。