玩转 Elasticsearch 的 SQL 功能

2018 年 7 月 7 日 开源中国


作者:Medcl

链接:

https://my.oschina.net/u/569210/blog/1836797

转载请在文中注明来源和作者


最近发布的 Elasticsearch 6.3 包含了大家期待已久的 SQL 特性,今天给大家介绍一下具体的使用方法。


首先看看接口的支持情况


目前支持的 SQL 只能进行数据的查询只读操作,不能进行数据的修改,所以我们的数据插入还是要走之前的常规索引接口。


目前 Elasticsearch 的支持 SQL 命令只有以下几个:



我们分别来看一下各自怎么用,以及有什么效果吧,自己也可以动手试一下,看看。

首先,我们创建一条数据:



RESTful 下调用 SQL


在 ES 里面执行 SQL 语句,有三种方式,第一种是 RESTful 方式,第二种是 SQL-CLI 命令行工具,第三种是通过 JDBC 来连接 ES,执行的 SQL 语句其实都一样,我们先以 RESTful 方式来说明用法。


RESTful 的语法如下:



因为 SQL 特性是 xpack 的免费功能,所以是在 _xpack 这个路径下面,我们只需要把 SQL 语句传给 query 字段就行了,注意最后面不要加上 ; 结尾,注意是不要!


我们执行上面的语句,查询返回的结果如下:



ES 俨然已经变成 SQL 数据库了,我们再看看如何获取所有的索引列表:



返回如下:



有点多,我们可以按名称过滤,如 twitt 开头的索引,注意通配符只支持 %和 _,分别表示多个和单个字符(什么,不记得了,回去翻数据库的书去!):



上面返回的结果都是:



如果要查看该索引的字段和元数据,如下:



返回:



都是动态生成的字段,包含了 .keyword 字段。 还能使用下面的命令来查看,主要是兼容 SQL 语法。



另外,如果不记得 ES 支持哪些函数,只需要执行下面的命令,即可得到完整列表:



返回结果如下,也就是当前6.3版本支持的所有函数,如下:



同样支持通配符进行过滤:



结果:



那如果要进行模糊搜索呢,Elasticsearch 的搜索能力大家都知道,强!在 SQL 里面,可以用 match 关键字来写,如下:



最后,还能试试 SELECT 里面的一些其他操作,如过滤,别名,如下:



结果如下:



或是分组和函数计算:



结果如下:



SQL-CLI 下的使用


上面的例子基本上把 SQL 的基本命令都介绍了一遍,很多情况下,用 RESTful 可能不是很方便,那么可以试试用 CLI 命令行工具来执行 SQL 语句,妥妥的 SQL 操作体验。


切换到命令行下,启动 cli 程序即可进入命令行交互提示界面,如下:



当你看到一个硕大的创口贴,表示 SQL 命令行已经准备就绪了,查看一下索引列表,不,数据表的列表:


[attach]2546[/attach]


各种操作妥妥的,上面已经测试过的命令就不在这里重复了,只是体验不一样罢了。

如果要连接远程的 ES 服务器,只需要启动命令行工具的时候,指定服务器地址,如果有加密,指定 keystone 文件,完整的帮助如下:



JDBC 对接


JDBC 对接的能力,让我们可以与各个 SQL 生态系统打通,利用众多现成的基于 SQL 之上的工具来使用 Elasticsearch,我们以两个工具来举例。


和其他数据库一样,要使用 JDBC,要下载该数据库的 JDBC 的驱动,我们打开: https://www.elastic.co/downloads/jdbc-client



只有一个 zip 包下载链接,下载即可。


然后,我们这里使用 DbVisualizer 来连接 ES 进行操作,这是一个数据库的操作和分析工具,DbVisualizer 下载地址是:https://www.dbvis.com/


下载安装启动之后的程序主界面如下图:



我们如果要使用 ES 作为数据源,我们第一件事需要把 ES 的 JDBC 驱动添加到 DbVisualizer 的已知驱动里面。我们打开 DbVisualizer 的菜单【Tools】-> 【Driver Manager】,打开如下设置窗口:



点击绿色的加号按钮,新增一个名为 Elasticsearch-SQL 的驱动,url format 设置成 jdbc:es:,如下图:



然后点击上图黄色的文件夹按钮,添加我们刚刚下载好且解压之后的所有 jar 文件,如下:



添加完成之后,如下图:



就可以关闭这个 JDBC 驱动的管理窗口了。下面我们来连接到 ES 数据库。


选择主程序左侧的新建连接图标,打开向导,如下:



选择刚刚加入的 Elasticsearch-SQL 驱动:



设置连接字符串,此处没有登录信息,如果有可以对应的填上:



点击 Connect,即可连接到 ES,左侧导航可以展开看到对应的 ES 索引信息:



同样可以查看相应的库表结果和具体的数据:



用他自带的工具执行 SQL 也是不在话下:



同理,各种 ETL 工具和基于 SQL 的 BI 和可视化分析工具都能把 Elasticsearch 当做 SQL 数据库来连接获取数据了。


最后一个小贴士,如果你的索引名称包含横线,如 logstash-201811,只需要做一个用双引号包含,对双引号进行转义即可,如下:


关于 SQL 操作的文档在这里:


  • https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-jdbc.html


Enjoy!


推荐阅读

正面反击 Google、FB 等巨头,万维网之父携 Solid 归来

为什么 Windows 7 会成为 Windows 10 最大的敌人?

RSS 之父 Winer 炮轰 Google 反客为主强推 HTTPS

SUSE Linux 再次易主!以 25 亿美元被 EQT 收购

7 月全球数据库排名:MongoDB 紧追 PostgreSQL

点击“阅读原文”查看更多精彩内容

登录查看更多
0

相关内容

SQL 全名是结构化查询语言,是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
基于大数据搭建社交好友推荐系统
云栖社区
8+阅读 · 2018年2月2日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
Arxiv
8+阅读 · 2019年5月20日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
5+阅读 · 2018年3月28日
Arxiv
6+阅读 · 2018年2月7日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
基于大数据搭建社交好友推荐系统
云栖社区
8+阅读 · 2018年2月2日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
相关论文
Arxiv
8+阅读 · 2019年5月20日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
5+阅读 · 2018年3月28日
Arxiv
6+阅读 · 2018年2月7日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员