[發明專利]一種查詢elasticsearch的實現方法及系統有效
| 申請號: | 201710194847.1 | 申請日: | 2017-03-28 |
| 公開(公告)號: | CN106934062B | 公開(公告)日: | 2020-05-19 |
| 發明(設計)人: | 楊佳佳;謝勝利 | 申請(專利權)人: | 廣東工業大學 |
| 主分類號: | G06F16/242 | 分類號: | G06F16/242;G06F16/2453;G06F16/2458 |
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 羅滿 |
| 地址: | 510062 廣東省*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 查詢 elasticsearch 實現 方法 系統 | ||
1.一種基于calcite的sql查詢elasticsearch的實現方法,其特征在于,包括:
獲取輸入的SQL語句;
根據提供的元數據對所述SQL語句進行元數據驗證;
在驗證通過后對所述SQL語句進行解析得到SQL語法樹;
利用附加規則將所述SQL語法樹轉換為elasticsearch可執行的匹配條件和查詢執行動作,返回查詢結果集;
其中,所述元數據的提供過程包括:
獲取elasticsearch連接的相關信息,并創建ElasticsearchSchema實例以表征一個數據庫對象;其中,ElasticsearchSchema初始化操作建立與elasticsearch服務器的連接;
通過覆寫getTableMap()使calcite可通過表名找到Table實例;
通過覆寫Table類中的RelDataType getRowType(RelDataTypeFactory typeFactory)以提供字段名稱以及類型元數據。
2.根據權利要求1所述的實現方法,其特征在于,所述附加規則包括:過濾規則、排序規則和聚合規則;其中,所述排序規則為一個或多個字段的升序或降序;所述聚合規則為實現SQL聚合函數至elasticsearch聚合API的映射。
3.根據權利要求2所述的實現方法,其特征在于,所述過濾規則具體為:
將所述SQL語法樹中第一符號翻譯為elasticsearch中的rangeQuery;
在SQL的模式匹配中,若模式串不以第二符號開頭,則翻譯為elasticsearch中的prefixQuery,否則翻譯為elasticsearch中的wildcardQuery;
將where子句中的和以及或邏輯,翻譯為elasticsearch中的boolQuery;
其中,所述第一符號為、=、或=;第二符號為_或%。
4.根據權利要求1-3任一項所述的實現方法,其特征在于,還包括:
根據所述元數據的字段類型信息對所述elasticsearch返回的數據進行轉換,并利用迭代器返回查詢結果集。
5.一種基于calcite的sql查詢elasticsearch的實現系統,其特征在于,包括:
JDBC模塊,用于獲取用戶輸入的SQL語句,并將所述SQL語句發送到calcite轉換模塊,并接收所述calcite轉換模塊返回的查詢結果集;
calcite轉換模塊,用于根據提供的元數據對接收到的所述SQL語句進行元數據驗證;在驗證通過后對所述SQL語句進行解析得到SQL語法樹;利用附加規則將所述SQL語法樹轉換為elasticsearch可執行的匹配條件和查詢執行動作,返回查詢結果集;
其中,所述calcite轉換模塊,包括:
元數據提供單元,用于獲取elasticsearch連接的相關信息,并創建ElasticsearchSchema實例以表征一個數據庫對象;其中,ElasticsearchSchema初始化操作建立與elasticsearch服務器的連接;通過覆寫getTableMap()使calcite可通過表名找到Table實例;通過覆寫Table類中的RelDataType getRowType(RelDataTypeFactorytypeFactory)以提供字段名稱以及類型元數據。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣東工業大學,未經廣東工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710194847.1/1.html,轉載請聲明來源鉆瓜專利網。





