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 通配這些。
作者:陶文,滴滴出行技術專家,在大型遺留系統的重構,持續傳遞能力建設,高可用分布式系統建構方面積累了豐富的經驗。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicWZwpmLlVDNmNjNwQGZ2kTMwAjMyITMyATZ3Q2Y5MGZzkjMiZGZ2UmZ2YDZm9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpeg)
阿裡雲Elasticsearch已正式釋出啦,Elastic開源官方聯合開發,內建5.5商業版本XPack功能,歡迎開通使用。
<a href="https://data.aliyun.com/product/elasticsearch">點選了解更多産品資訊</a>