天天看點

【技術實驗】Elasticsearch 做資料庫系列之一:表結構定義

Elaticsearch 有非常好的查詢性能,以及強大的查詢文法。在一定場合下可以替代RDBMS做為OLAP的用途。但是其官方查詢文法并不是SQL,而是一種Elasticsearch獨創的DSL。主要是兩個方面的DSL:

這兩個DSL說實話是不好學習和了解的,而且即便掌握了寫起來也是比較繁瑣的,但是功能卻非常強大。本系列文章是為了兩個目的:

通過類比SQL的概念,實驗并學習Elasticsearch聚合DSL的文法和語義

用 python 實作一個翻譯器,能夠使用 SQL 來完成 Elasticsearch 聚合DSL一樣的功能。這個小腳本可以在日常工作中做為一件友善的利器

下面是導入Elasticsearch的mapping(相當于關系型資料庫的表結構定義):

對于把 Elasticsearch 當作資料庫來使用,預設以下幾個設定

把所有字段設定為 not_analyzed

_source 打開,這樣就不用零散地存儲每個字段了,大部分情況下這樣更高效

_all 關閉,因為檢索都是基于 k=v 這樣字段已知的查詢的

執行python import-symbol.py導入完成資料之後,執行:

傳回:

從 mapping 的角度,和表結構定義是非常類似的。除了_source,_all和analyzed這幾個概念,基本上沒有什麼差異。Elasticsearch做為資料庫最大的差別是 index/mapping 的關系,以及 index 通配這些。

作者:陶文,滴滴出行技術專家,在大型遺留系統的重構,持續傳遞能力建設,高可用分布式系統建構方面積累了豐富的經驗。

【技術實驗】Elasticsearch 做資料庫系列之一:表結構定義

阿裡雲Elasticsearch已正式釋出啦,Elastic開源官方聯合開發,內建5.5商業版本XPack功能,歡迎開通使用。

<a href="https://data.aliyun.com/product/elasticsearch">點選了解更多産品資訊</a>