推出 Elasticsearch 查詢語言 (ES|QL)

作者:Costin Leau

我很高興地宣布,經過大約一年的開發,Elasticsearch 查詢語言 (ES|QL) 已準備好與世界共享,并已登陸 Elasticsearch 存儲庫。 ES|QL 是 Elasticsearch? 原生的強大聲明性語言,專為可組合性、表現力和速度而設計。

為什么要另一種語言?

Elasticsearch 支持多種語言,從古老的 queryDSL 到 EQL、KQL、SQL、Painless、Canvas/Timelion 等,隨著其采用率的增加,受眾及其需求也在增加。 它不再只是 “全文搜索”。 它涉及很多事情,例如日志探索、威脅搜尋、報告、警報和自定義處理。

作為我們自己產品的消費者,我們想要一種與 Elasticsearch 交互的單一、整合的方式,這種方式可以使全面的計算功能接近數據,并且無需昂貴地傳輸到外部系統進行自定義處理。

以下是使用 MySQL 演示 employees 數據集(進行了大量修改)從測試套件中獲取的 ES|QL 查詢:

  FROM employees
| EVAL hired_year = TO_INTEGER(DATE_FORMAT(hire_date, "YYYY"))
| WHERE hired_year > 1984
| STATS avg_salary = AVG(salary) BY languages
| EVAL avg_salary = ROUND(avg_salary)
| EVAL lang_code = TO_STRING(languages)
| ENRICH languages_policy ON lang_code WITH lang = language_name
| WHERE NOT IS_NULL(lang)
| KEEP avg_salary, lang
| SORT avg_salary ASC
| LIMIT 3

返回類似于以下內容的響應:

{"columns": [{"name": "avg_salary", "type": "double"},{"name": "lang",       "type": "keyword"}],"rows": [["43760.0", "Spanish"],["48644.0", "French"],["48832.0", "German"]]
}

單個 ES|QL 查詢執行過濾、處理、分組、重命名、排序、查找和列修剪。

查詢從上到下流動,就像數據一樣。 人們可以根據需要鏈接任意數量的命令,對它們重新排序,并使用內置函數或其自身的評估。 ES|QL 提供了統一的查詢體驗,比現有的查詢界面更簡單、更強大,并且將繼續可用。

專用查詢引擎

ES|QL 不僅僅是一種語言,還是 Elasticsearch 的成熟、專業的查詢和計算引擎。 沒有對 QueryDSL 的翻譯或轉譯:所有 ES|QL 查詢都經過詞法分析和解析、解析和語義分析、驗證和優化,然后是針對集群中的數據進行分布式執行的規劃階??段。 指定的目標節點負責本地執行,并通過使用 ES|QL 基礎設施執行自己的本地重新規劃來利用本地數據特征。

ES|QL 帶來了一種在設計時考慮到性能的新執行引擎,該引擎一次對塊而不是對每行進行操作,以矢量化和緩存局部性為目標,并支持專業化和多線程。 它是一個獨立于現有 Elasticsearch 聚合框架的組件,具有不同的性能特征。 在我們當前的基準測試中,幾個聚合有了顯著的改進(下圖中的值越小越好)。

目標是提供不同的功能,例如執行多個鏈式分組:

POST /_query?format=txt
{"query" : """FROM employees
| STATS c = COUNT(emp_no) BY languages
| STATS most_speakers_of_a_lang = MAX(c)"""
}

上面查詢顯示的結果為:

most_speakers_of_a_lang
-----------------------
21

請留意未來的博文,我們將探討 ES|QL 的功能、設計決策和架構。

我在哪里可以得到它?

ES|QL 代碼目前在功能分支上可用,并將作為 Elasticsearch 中的技術預覽版發布。 這是一項免費功能,可供所有人使用。 每天快照很快就會可供下載,因此請隨時查看代碼并自行構建。 嘗試一下 ES|QL 并開始探索本地數據 - 請閱讀此處的文檔。

因為我們正處于 ES|QL 的早期階段,可能存在一些未解決的問題、障礙,甚至是錯誤,請提出問題。 我們迫不及待地想與 Elasticsearch 社區分享 ES|QL!

我們代表 ES|QL 團隊期待您的反饋!

本文中描述的任何特性或功能的發布和時間安排均由 Elastic 自行決定。 當前不可用的任何特性或功能可能無法按時交付或根本無法交付。

原文:https://www.elastic.co/blog/elasticsearch-query-language-esql

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36808.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django-配置郵箱功能(一):使用django自帶的發送郵件功能

一、獲取郵箱授權碼 以QQ郵箱為例子: 1、進入到設置,找到賬戶 2、開啟POP3等服務,點擊管理服務 3、進入管理服務,生成授權碼 4、按照要求發送短信就可以了 5、將授權碼復制保存,離開界面就看不到了 二、django項目中…

2023上半年京東手機行業品牌銷售排行榜(京東數據平臺)

后疫情時代,不少行業都迎來消費復蘇,我國智能手機市場在今年上半年也實現溫和的復蘇,手機市場的出貨量回暖。 根據鯨參謀平臺的數據顯示,2023年上半年,京東平臺上手機的銷量為2830萬,環比增長約4%&#xf…

劍指 Offer ! 61. 撲克牌中的順子

參考資料:力扣K神的講解 劍指 Offer 61. 撲克牌中的順子 簡單 351 相關企業 從若干副撲克牌中隨機抽 5 張牌,判斷是不是一個順子,即這5張牌是不是連續的。2~10為數字本身,A為1,J為11,Q為12&…

引入三階失真的非線性放大器的模擬輸出及使用中值濾波器去除峰值研究(Matlab代碼實現)

💥💥💞💞歡迎來到本博客????💥💥 🏆博主優勢:🌞🌞🌞博客內容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ??座右銘&a…

【C/C++】STL queue 非線程安全接口,危險!

STL 中的 queue 是非線程安全的,一個組合操作:front(); pop() 先讀取隊首元素然后刪除隊首元素,若是有多個線程執行這個組合操作的話,可能會發生執行序列交替執行,導致一些意想不到的行為。因此需要重新設計線程安全的…

JVM 內存結構

1、方法區(線程共享) 存儲靜態變量(靜態方法、變量、代碼塊)、常量池、類信息 2、堆信息(線程共享) 存儲實例對象,例如 new 出來的對象信息 A a1 new A() 3、虛擬機棧(線程隔離) 每個線程的都有…

三、MySql表的操作

文章目錄 一、創建表(一)語法:(二)說明: 二、創建表案例(一)代碼:(二)說明: 三、查看表結構(一)語法&#xff…

docker相關命令總結(停止、重啟、重加載配置文件)

常用命令 # 配置 Docker 守護進程的行為和參數 vi /etc/docker/daemon.json# 停止docker服務 sudo systemctl stop docker# 啟動 Docker 服務: sudo systemctl start docker# 重新加載systemd守護程序的配置文件,不會重啟服務(配置文件&…

Go語言template模板語法

Go語言模板語法 文章目錄 <center> Go語言模板語法連接前后端的符號: {{}}注釋管道(pipeline)變量條件判斷range 關鍵字with 關鍵字比較函數自定義函數嵌套模板模板繼承 連接前后端的符號: {{}} 模板語法都包含在{{}}之中,其中{{.}}中的.表示當前對象.在傳入一個結構體對…

sql-libs靶場-----0x00、環境準備

文章目錄 一、PhPstudy下載、安裝二、Sqli-libs下載、搭建三、啟用Sqli-libs phpstudy地址&#xff1a;https://www.xp.cn/ sqli-libs地址&#xff1a;https://github.com/Audi-1/sqli-labs 一、PhPstudy下載、安裝 1、下載–解壓–安裝&#xff0c;安裝完成如下圖 2、更換php…

【學習筆記】[AGC021F] Trinity

有點難&#x1f605; 考慮加入每一列&#xff0c;發現我們只關心當前還未確定的行的數目 有點難算&#x1f605; 設 d p i , j dp_{i,j} dpi,j?表示有 i i i列&#xff0c;其中 j j j行未確定的方案數。欽定每一列至少有一個黑色格子。 d p i , j j ( j 1 ) 2 d p i ? 1…

IGV.js 的完全本地化運行探索

問題及解決方法 IGV.js 完全本地化是為了合規&#xff0c;不使用外網的情況下查看基因組。不聯網需要下載 genomes.json 文件及其中的內容之外&#xff0c;還需要修改 igv.js本身&#xff0c;防止5s超時后才顯示網頁內容。修改的關鍵詞是: genomes.json&#xff0c;改為本地的…

Leetcode-每日一題【劍指 Offer 13. 機器人的運動范圍】

題目 地上有一個m行n列的方格&#xff0c;從坐標 [0,0] 到坐標 [m-1,n-1] 。一個機器人從坐標 [0, 0] 的格子開始移動&#xff0c;它每次可以向左、右、上、下移動一格&#xff08;不能移動到方格外&#xff09;&#xff0c;也不能進入行坐標和列坐標的數位之和大于k的格子。例…

一個簡單實用的線程池及線程池組的實現!

1.線程池簡介 線程池&#xff0c;顧名思義&#xff0c;就是一個“池子”里面放有多個線程。為什么要使用線程池呢&#xff1f;當我們編寫的代碼需要并發異步處理很多任務時候&#xff0c;一般的處理辦法是一個任務開啟一個線程去處理&#xff0c;處理結束后釋放線程。可是這樣…

【QT】窗口通過dragEnterEvent和dropEvent拖拽導入文件

【QT】窗口通過dragEnterEvent和dropEvent拖拽導入文件 界面允許接受拖拽 在界面的構造函數中設置接受拖拽放置文件 setAcceptDrops(true); 拖拽進入、放下事件 dragEnterEvent函數對拖動的文件進行過濾&#xff0c;如果不符合過濾條件按將無法拖拽進入窗口 dropEvent函數…

支付總架構解析

一、支付全局分層 一筆支付以用戶為起點&#xff0c;經過眾多支付參與者之后&#xff0c;到達央行的清算賬戶&#xff0c;完成最終的資金清算。那么我們研究支付宏觀&#xff0c;可以站在央行清算賬戶位置&#xff0c;俯視整個支付金字塔&#xff0c;如圖1所示&#xff1a; 圖…

[保研/考研機試] KY135 又一版 A+B 浙江大學復試上機題 C++實現

題目鏈接&#xff1a; KY135 又一版 AB https://www.nowcoder.com/share/jump/437195121691736185698 描述 輸入兩個不超過整型定義的非負10進制整數A和B(<231-1)&#xff0c;輸出AB的m (1 < m <10)進制數。 輸入描述&#xff1a; 輸入格式&#xff1a;測試輸入包…

小米200萬LOGO設計的前端實現技術詳解

引言 小米是一家知名的科技公司&#xff0c;擁有眾多粉絲。其標志性的LOGO是小米200萬像素的文字LOGO&#xff0c;給人留下了深刻的印象。本文將詳細介紹小米200萬LOGO的前端設計實現技術&#xff0c;包括HTML、CSS和JavaScript的使用&#xff0c;以及展示最多的代碼示例。 設…

mysql使用redis+canal實現緩存一致性

一、開啟binlog日志 1.首先查看是否開啟了binlog show variables like %log_bin%; 如果是OFF說明位開啟 2、開啟binlog日志&#xff0c;并重啟mysql服務 右鍵我的電腦——管理——服務——MYSQL——屬性 這里是my.ini地址 在[mysqld]底下添加 log-bin mysqlbinlog binlog-f…

c#設計模式-創建型模式 之 工廠模式

前言&#xff1a; 工廠模式&#xff08;Factory Pattern&#xff09;是一種常用的對象創建型設計模式。該模式的主要思想是提供一個創建對象的接口&#xff08;也可以是抽象類、靜態方法等&#xff09;&#xff0c;將實際創建對象的工作推遲到子類中進行。這樣一來&#xff0c…