Elasticsearch:通过 JDBC 使用 SQL 来查询索引 - DBeaver
ƒElasticsearch 的 SQL 访问层能够通过两种最常用的数据库管理系统 (DBMS) 协议提供数据访问,Java 数据库连接 (JDBC) 和开放数据库连接 (ODBC)。 这些驱动程序可以安装在客户端应用程序中,以便轻松地将 Elasticsearch 与最流行的工具集成,例如:
-
DBeaver Microsoft Excel Microsoft Power BI Qlik Sense Desktop Tableau SQL Workbench
在我之前的文章 “” 详细描述了如何使用 JDBC 来连接 Elasticsearch 并使用 SQL 来查询 Elasticsearch。在那篇文章中,我使用了 SQL Workbench 来进行展示。在今天的文章中,我将使用 DBeaver 来进行展示。 我展示的版本是最新的 Elastic Stack 8.3.3。
安装及下载
-
我们首先按照 “” 安装好自己的 Elasticsearch 及 Kibana。我们安装 Elastic Stack 8.x。 我也按照 下载 macOS 的 DBeaver。
我们接下来在地址 下载 JDBC client,并保存于自己的电脑目录中。
启动白金试用
试用许可证必须处于活动状态才能使用 SQL JDBC 连接到 Elasticsearch; 它可以在 Kibana 中的 Stack Management 下轻松设置 | Licence Management。 这也可以通过执行以下 API 调用来完成:
POST /_license/start_trial?acknowledge=true&pretty
连接 Elasticsearch
我们将使用以下步骤通过 DBeaver 查询我们的数据:
1)启动 DBeaver:
我们需要配置一个新的数据库连接。 在 DBMS 的全文部分下选择 Elasticsearch:
由于我的版本是最新的 Elastic Stack 8.3.3,所以我们删除上面已经有的版本。我们添加在上面下载的最新的驱动 x-pack-sql-jdbc-8.3.3.jar。
由于我们的 Elasticsearxh 是 HTTPS 的安装,所以,我们需要重新修改上面的 host 为 https://localhost。
如果这个时候,我们点击 Test Connection,我们会发现如下的结果:
显然,我们遇到了一个证书的问题。因为我们的安装是自签名的,我们必须为 DBeaver 安装这个访问 Elasticsearch 的证书。
我们先来看看 Elasticsearch 安装目录:
$ pwd /Users/liuxg/test/elasticsearch-8.3.3 $ ls config/certs/ http.p12 http_ca.crt transport.p12
接下来,我们需要把 http.p12 这个证书配置到 Dbeaver 的 truststore 里:
在上面所示的 ssl.truststore.pass,我们可以通过如下的方法来得到:
$ pwd /Users/liuxg/test/elasticsearch-8.3.3 $ ./bin/elasticsearch-keystore list keystore.seed xpack.security.http.ssl.keystore.secure_password xpack.security.transport.ssl.keystore.secure_password xpack.security.transport.ssl.truststore.secure_password $ ./bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password wbyn1r52TQa3dyZnET3wEA
我们再次点击上面的 Test Connection ... 按钮:
上面显示我们的连接是成功的。
针对如果只有 crt 格式的证书,我们可以使用如下的方法来得获得:
$ pwd /Users/liuxg/test/elasticsearch-8.3.3 $ keytool -import -keystore elasticsearch.p12 -file /Users/liuxg/test/elasticsearch-8.3.3/config/certs/http_ca.crt Enter keystore password: Owner: CN=Elasticsearch security auto-configuration HTTP CA Issuer: CN=Elasticsearch security auto-configuration HTTP CA Serial number: 5b6094cc0214d5b519a823ed4249cfacc31d7348 Valid from: Fri Jul 29 16:51:11 CST 2022 until: Mon Jul 28 16:51:11 CST 2025 Certificate fingerprints: SHA1: 53:3C:0A:0B:78:D0:E5:E4:84:70:5B:AD:40:79:35:8B:C5:97:CF:EA SHA256: 8D:CE:0B:68:03:1C:AD:F1:D0:61:BB:ED:1B:AF:61:3E:29:3E:62:13:76:B6:A8:D5:9F:1A:03:98:61:A3:E7:B7 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 4096-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 6A 5A 41 A0 84 BA C2 A2 9F DD 49 DC 56 A6 E0 EC jZA.......I.V... 0010: CE 30 47 FE .0G. ] ] #2: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen: no limit ] #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 6A 5A 41 A0 84 BA C2 A2 9F DD 49 DC 56 A6 E0 EC jZA.......I.V... 0010: CE 30 47 FE .0G. ] ] Trust this certificate? [no]: yes Certificate was added to keystore $ ls LICENSE.txt bin elasticsearch.p12 lib plugins NOTICE.txt config http_ca.crt logs README.asciidoc data jdk.app modules $ pwd /Users/liuxg/test/elasticsearch-8.3.3 $ ls /Users/liuxg/test/elasticsearch-8.3.3/elasticsearch.p12 /Users/liuxg/test/elasticsearch-8.3.3/elasticsearch.p12
如上所示,它利用 http_ca.crt 文件来生成了一个叫做 elasticsearch.p12 的证书。在生产证书时,它需要我们输入一个密码。我设置它为 123456。接下来,我们可以在 DBeaver 中做如下的配置:
同样我们可以看到连接是成功的。
准备索引
我们接下来使用 Kibana 自带的索引数据。我们需要加载:
这样我们就加载了一个叫做 kibana_sample_data_flights 的索引。
我们可以看到最新被摄入的 kibana_sample_data_flights 索引的数据。我们可以选择 Data 来查看数据:
Elasticsearch 的 SQL JDBC 驱动程序使用标准 Elasticsearch 端口 9200,它将来自不同应用程序的所有连接包装在标准 JDBC 查询和 ResultSet 中,从而允许与 Elasticsearch 无缝集成。
更多关于 Elasticsearch SQL 的文章请参阅文章:
-
)
参考:
【1】