Elasticsearch SQL
Elasticsearch SQL是由X-Pack組件提供的它允許針對Elasticsearch實時執(zhí)行類似SQL的查詢
可以在JDBC、REST接口醉顽、命令行或者其他客戶端使用SQL語法進行查詢以及聚合
我們可以將Elasticsearch SQL看作是一個轉(zhuǎn)換器妖泄,它既理解SQL也理解Elasticsearch,并且通過利用Elasticsearch功能客税,使實時讀取和處理數(shù)據(jù)變得容易况褪。
Elasticsearch SQL的好處:
- 原生整合
- 無需外部組件
- 輕量級和高效
體驗
- kibana
依次在kibana上執(zhí)行下面兩條語句
- kibana
PUT /library/book/_bulk?refresh
{"index":{"_id": "Leviathan Wakes"}}
{"name": "Leviathan Wakes", "author": "James S.A. Corey", "release_date": "2011-06-02", "page_count": 561}
{"index":{"_id": "Hyperion"}}
{"name": "Hyperion", "author": "Dan Simmons", "release_date": "1989-05-26", "page_count": 482}
{"index":{"_id": "Dune"}}
{"name": "Dune", "author": "Frank Herbert", "release_date": "1965-06-01", "page_count": 604}
POST /_xpack/sql?format=txt
{
"query": "SELECT * FROM library WHERE release_date < '2000-01-01'"
}
- 2.命令行
從elasticsearch/bin目錄下 可以看到有sql-cli
工具
在elasticsearch/bin
目錄下調(diào)用./elasticsearch-sql-cli
進入命令行
默認情況下elasticsearch-sql-cli會嘗試連接localhost:9200, 如果你修改了ES的端口,需要指定新的ES訪問地址更耻,比如 你的ES端口設(shè)置成 8888
, 那么需要輸入下列命令來打開
./elasticsearch-sql-cli http://localhost:8888
進入 es-sql 命令行以后测垛,類似的,用SQL語句查詢
- ES并沒有使用新的數(shù)據(jù)結(jié)構(gòu)以支持SQL秧均,只是將SQL語句映射到原有的結(jié)構(gòu)中進行查詢食侮,因為依賴于ES的數(shù)據(jù)結(jié)構(gòu)所衍生的各種概念 都有跟 column, row, database, table, datatype 等數(shù)據(jù)庫概念一一對應(yīng)的
- ES的SQL模塊盡可能地滿足principle of least surprise , 即通過ES-SQL查詢的結(jié)果會盡可能地符合用戶對該SQL的理解所產(chǎn)生的預期結(jié)果
- SQL模塊需要ES6.3+版本
更多資料可以查看官方文檔