最近发布的 Elasticsearch 6.3 包含了大家期待已久的 SQL 特性,今天给大家介绍一下具体的使用方法。
首先看看接口的支持情况
目前支持的 SQL 只能进行数据的查询只读操作,不能进行数据的修改,所以我们的数据插入还是要走之前的常规索引接口。
目前 Elasticsearch 的支持 SQL 命令只有以下几个:
命令说明DESC table用来描述索引的字段属性SHOW COLUMNS功能同上,只是别名SHOW FUNCTIONS列出支持的函数列表,支持通配符?过滤SHOW TABLES返回索引列表SELECT .. FROM table_name WHERE .. GROUP BY .. HAVING .. ORDER BY .. LIMIT ..用来执行查询的命令
我们分别来看一下各自怎么用,以及二手手机号码购买平台有什么效果吧,自己也可以动手试一下,看看。
首先,我们创建一条数据:
POST twitter/doc/
{
"name":"medcl",
"twitter":"sql is awesome",
"date":"2021-07-27",
"id":123
}
RESTful下调用SQL
在 ES 里面执行 SQL 语句,有三种方式,第一种是 RESTful 方式,第二种是 SQL-CLI 命令行工具,第三种是通过 JDBC 来连接 ES,执行的 SQL 语句其实都一样,我们先以 RESTful 方式来说明用法。
RESTful 的语法如下:
POST /_xpack/sql?format=txt
{
"query": "SELECT * FROM twitter"
}
因为 SQL 特性是 xpack 的免费功能,所以是在 _xpack 这个路径下面,我们只需要把 SQL 语句传给 query 字段就行了,注意最后面不要加上 ; 结尾,注意是不要!
我们执行上面的语句,查询返回的结果如下:
date | id | name | twitter
------------------------+---------------+---------------+---------------
2021-07-27T00:00:00.000Z|123 |medcl |sql is awesome
ES 俨然已经变成 SQL 数据库了,我们再看看如何获取所有的索引列表:
POST /_xpack/sql?format=txt
{
"query": "SHOW tables"
}
返回如下:
name | type
---------------------------------+-------