天天看點

玩轉 Elasticsearch 的 SQL 功能

  最近釋出的 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 資料庫了,我們再看看如何擷取所有的索引清單:

  "query": "SHOW tables"

  傳回如下:

  name | type

  ---------------------------------+-------