作者:來自 Elastic?Tomás Murúa
讓我們回顧一下 ES|QL 的歷史和它的改進。
更多閱讀,Elasticsearch:ES|QL 查詢展示。
Elasticsearch 配備了眾多新功能,幫助你為自己的用例構建最佳搜索方案。查看我們的示例筆記本了解更多內容,開始免費云試用,或在本地機器上試用 Elastic。
自首次發布以來,ES|QL 一直在不斷發展。引入了新的命令、函數和功能,以覆蓋更多用例。本文將回顧該語言在各版本中的成長過程以及每次更新所帶來的變化。
什么是 ES|QL?
ES|QL(Elasticsearch Query Language)是一種管道式查詢語言,用于處理 Elasticsearch 中的數據。它允許用戶通過一系列命令來過濾、轉換和匯總數據,并以 JSON 或(在指定時)表格格式返回結果,可通過 _query API 直接集成到后端工作流,或在 Kibana 中用于可視化、儀表板和告警。
ES|QL 的推出旨在簡化常見的數據分析流程,減少在工具或查詢語言之間切換的需要。它的目標是提供一種一致、可讀性強的語法,適用于可觀測性、安全性和通用用例,讓你可以從一個入口輕松對 Elasticsearch 數據提出復雜的問題。
例如,一個簡單的 ES|QL 查詢可能如下所示:
FROM kibana_sample_data_logs
| WHERE @timestamp > NOW() - 1d
| KEEP @timestamp, response, message, tags
| SORT response DESC
使用示例網站日志數據集生成的示例。
我們已經撰寫了許多關于 ES|QL 的文章,推薦你閱讀:
-
新加入 Elasticsearch 倉庫:ES|QL
-
從夢想走向現實:宣布 Elastic 的管道查詢語言 ES|QL
-
ES|QL 入門指南(Elasticsearch Query Language)
-
Elasticsearch 管道查詢語言 ES|QL 現已正式發布
-
ES|QL,用于搜索 —— 引入評分和語義搜索
-
還有更多!
以下是從初始發布開始的 ES|QL 各版本更新摘要。
發布前
在首次公開發布(8.11)之前,ES|QL 已經開發了一年多。團隊在 Elasticsearch 內部設計并構建了一個專用的計算和查詢引擎,以便在靠近數據的位置進行高級處理。
Elasticsearch 8.11(技術預覽)
ES|QL 作為一種管道查詢語言在技術預覽版中首次引入,經過數月開發,旨在簡化數據分析流程。該初始版本引入了函數,如 LEAST、GREATEST、LEFT、RIGHT、CEIL,以及對持續時間和時間段的算術操作。你可以比較和排序文本字段,并使用 TopN 根據多值塊對行進行排序。
Elasticsearch 8.12
該版本重點提升 ES|QL 的速度和效率。新增 PROFILE 選項,用于顯示每個查詢步驟所耗時間,方便調試與優化。ES|QL 開始支持 GEO_POINT 和 CARTESIAN_POINT,可以在查詢中使用空間數據。內部優化減少了內存使用,并更高效地加載多個字段。此外,現在可以直接訪問 _source 字段,從而獲取原始文檔內容。
Elasticsearch 8.13
引入異步查詢 API,支持在后臺執行長時間運行的查詢并稍后獲取結果。新增函數 TO_UPPER、TO_LOWER、date_diff、MV_FIRST 和 MV_LAST,方便處理字符串和多值字段。=~ 運算符支持不區分大小寫的比較。支持跨集群 enrich 查詢,即可以基于遠程索引對查詢進行增強。STATS 命令現在支持聚合表達式。
Elasticsearch 8.14(正式發布)
ES|QL 現已正式發布。可以在 STATS 表達式中對值進行分組,并按表達式排序,而不僅限于常規字段。新增函數 LOCATE(查找子串)、SIGNUM(返回給定數字的符號),以及空間輔助函數 ST_CONTAINS、ST_DISJOINT 和 ST_WITHIN。正則表達式和 CASE 表達式得到了優化。enrich 管道支持文本字段,大型數組的序列化速度也更快。
Elasticsearch 8.15
現在你可以使用 ::
顯式轉換值類型,例如從字符串轉為整數。新增 top_list 聚合類型,幫助匯總最常見的值,ip_prefix 函數獲取 IP 地址的前綴。新增 Arrow 格式輸出,實現與 pandas 或支持 Arrow 的引擎的數據互操作。同時,_ignored 元數據字段也被公開。
Elasticsearch 8.16
新增函數 EXP、HYPOT、SPACE 和 REVERSE。MIN、MAX 和 TOP 聚合支持更多數據類型,如字符串、IP 和布爾值。現在可以使用 MV_PERCENTILE 計算多值字段的百分位數,使用 MV_PSERIES_WEIGHTED_SUM 進行加權評分。性能分析和內存跟蹤得到改進,幫助用戶更好理解性能和資源使用。
Elasticsearch 8.17
ES|QL 在技術預覽中開始支持 date_nanos,提高時間序列用例的精度。新增標量函數 BIT_LENGTH 和 BYTE_LENGTH,分別返回字符串的位數和字節數。skip_unavailable 現在在查詢規劃階段生效,提升多集群環境下的容錯能力。新函數指標(metrics)允許跟蹤哪些 ES|QL 函數使用最多。。
8.18 和 9.0 同時發布,但更新日志仍然不同。
Elasticsearch 8.18
LOOKUP JOIN 進入技術預覽,允許跨索引連接數據。例如,將日志與元數據或用戶配置文件匹配。全文評分通過 _score 正式支持,MATCH 等函數改進了新選項和兼容性。CATEGORIZE 針對大型數據集進行了優化。ST_EXTENT_AGG 和 ST_ENVELOPE 啟用空間匯總,如為地理數據查找邊界框。date_nanos 支持擴展到所有相關日期函數。 ?
Elasticsearch 9.0?
LOOKUP JOIN 進入技術預覽。KQL(技術預覽)允許將 Kibana 風格的過濾器嵌入查詢。 ?
全文匹配評分支持 disjunctions(例如,“this OR that”),_score 現在可在表達式中使用。高級遙測、計劃驗證和 TopN 下推中的部分排序字段都有助于更快、更智能的查詢執行。 ?
技術增強包括更智能的字段上限解析、跨集群查詢的遙測、CCS 的異步元數據以及對未映射字段的支持。STARTS_WITH、ENDS_WITH 和 TO_UPPER 等函數現已下推到 Lucene 以提高性能。 ?
要了解每個版本的詳細信息,你可以查看我們為這篇文章整理的完整時間線,如果你想親自試驗 ES|QL,可以嘗試 ES|QL 沙盒。
原文:Timeline of ES|QL improvements - Elasticsearch Labs