成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Elasticsearch不會DSL沒事,來試試SQL吧

數據庫
Elasticsearch 是一個分布式、RESTful 風格的搜索和數據分析引擎,能夠解決不斷涌現出的各種用例,最常見的是作為搜索引擎,提供項目中全文搜索。

 Elasticsearch 是一個分布式、RESTful 風格的搜索和數據分析引擎,能夠解決不斷涌現出的各種用例,最常見的是作為搜索引擎,提供項目中全文搜索。

一提到Elasticsearch,必然需要提到Query DSL,DSL(Domain Specific Language特定領域語言)以JSON請求體的形式,但DSL語法并沒有那么直觀,如果不經常使用,就會遺忘,等需要用的時候,感覺非常不方便。

[[355139]]

今天我們就看下官方提供的X-Pack,它包含一項SQL功能,可對Elasticsearch索引執行SQL查詢并以表格格式返回結果。Elasticsearch SQL(6.3版本以后)不僅允許針對Elasticsearch實時執行類似SQL的查詢。也可以使用REST接口,或者使用JDBC,保證任何客戶端都可以使用SQL對Elasticsearch中的數據進行原生搜索和聚合數據。我們可以將Elasticsearch SQL看作是一種翻譯器,它可以將SQL翻譯成Query DSL。

官方說明:https://www.elastic.co/guide/en/elasticsearch/reference/7.8/xpack-sql.html

下面我們先使用es + kabana體驗一下(安裝就不說明了)

構建數據

先創建索引,注意es 7.x去掉了type,本文使用的是7.8.0版本的es和kabana。

創建索引


放入文檔數據

 

 

SQL查詢數據


SQL語法

在ES中使用SQL查詢的語法與在數據庫中使用基本一致,具體格式如下:

  1. SELECT select_expr [, ...] 
  2. FROM table_name ] 
  3. WHERE condition ] 
  4. GROUP BY grouping_element [, ...] ] 
  5. HAVING condition] 
  6. ORDER BY expression [ ASC | DESC ] [, ...] ] 
  7. [ LIMIT [ count ] ] 
  8. [ PIVOT ( aggregation_expr FOR column IN ( value [ [ AS ] alias ] [, ...] ) ) ] 

 大家可以在實際中自行體驗一下,也可以通過下列語句,將sql轉成DSL 

  1. POST /_sql/translate 
  2.   "query""SELECT * FROM student LIMIT 10" 

  

下面我們來看下jdbc的操作

JDBC使用SQL查詢

引入依賴

  1. <dependency> 
  2.   <groupId>org.elasticsearch.plugin</groupId> 
  3.   <artifactId>x-pack-sql-jdbc</artifactId> 
  4.   <version>7.8.0</version> 
  5. </dependency> 

注意該依賴maven中央倉庫沒有,需要配置倉庫地址

  1. <repositories> 
  2.         <repository> 
  3.             <id>elastic.co</id> 
  4.             <url>https://artifacts.elastic.co/maven</url> 
  5.         </repository> 
  6.     </repositories> 

 jdbc相關代碼

  1. Class.forName("org.elasticsearch.xpack.sql.jdbc.EsDriver"); 
  2. Connection connection = DriverManager.getConnection("jdbc:es://http://127.0.0.1:9200"); 
  3. Statement statement = connection.createStatement(); 
  4. ResultSet resultSet = statement.executeQuery("select name from student"); 
  5. while (resultSet.next()){ 
  6.   System.out.println(resultSet.getString("name")); 

 執行后,報錯如下

  1. Exception in thread "main" java.sql.SQLInvalidAuthorizationSpecException: current license is non-compliant for [jdbc] 
  2.     at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection$SqlExceptionType.asException(JreHttpUrlConnection.java:330) 
  3.     at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection.parserError(JreHttpUrlConnection.java:207) 
  4.     at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection.request(JreHttpUrlConnection.java:170) 
  5.     at org.elasticsearch.xpack.sql.client.HttpClient.lambda$post$1(HttpClient.java:106) 
  6.     at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection.http(JreHttpUrlConnection.java:66) 
  7.     at org.elasticsearch.xpack.sql.client.HttpClient.lambda$post$2(HttpClient.java:105) 
  8.     at java.security.AccessController.doPrivileged(Native Method) 
  9.     at org.elasticsearch.xpack.sql.client.HttpClient.post(HttpClient.java:104) 
  10.     at org.elasticsearch.xpack.sql.client.HttpClient.query(HttpClient.java:81) 
  11.     at org.elasticsearch.xpack.sql.jdbc.JdbcHttpClient.query(JdbcHttpClient.java:70) 
  12.     at org.elasticsearch.xpack.sql.jdbc.JdbcStatement.initResultSet(JdbcStatement.java:160) 
  13.     at org.elasticsearch.xpack.sql.jdbc.JdbcStatement.execute(JdbcStatement.java:151) 
  14.     at org.elasticsearch.xpack.sql.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:40) 
  15.     at com.ganhuojun.gracefulshutdown.configuration.Test.main(Test.java:22) 

 發現current license is non-compliant for [jdbc],說明功能被限制,查詢下官網發現,jdbc在免費開源的版本是不支持的 

 

查詢地址:https://www.elastic.co/cn/subscriptions

那怎么解決呢?

官網提供了我們修改license api的功能,去體驗一些新的功能

https://www.elastic.co/guide/en/elasticsearch/reference/master/start-trial.html

按照官網操作后,執行前面的jdbc代碼,可以得到正確結果


由于jdbc版本使用需要付費,建議在實際項目中,使用DSL或者SQL REST API操作。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-06-17 11:10:43

PandasPolarsPython

2020-09-28 11:09:54

SQLDSL

2020-07-10 12:06:28

WebpackBundleless瀏覽器

2020-08-25 08:03:59

測試Sharness結構

2023-06-13 08:00:57

ChatGPT語言模型

2023-10-29 09:11:03

DSL語法

2020-11-04 16:34:45

單元測試技術

2021-09-07 11:20:02

binlogMySQL數據庫

2021-08-04 08:31:10

MySQL數據庫日志

2023-11-13 12:48:32

語言DSL

2022-12-30 09:12:55

查詢es搜索值

2012-07-03 09:38:42

前端

2020-12-15 10:24:05

2025-06-04 01:02:00

MySQL索引

2019-09-21 21:32:34

數據庫SQL分布式

2024-06-19 10:01:50

2020-04-03 14:25:55

diff Meld工具

2018-03-20 16:20:29

LinuxChromiumLibreOffice

2021-01-27 11:36:34

代碼開發工具

2016-09-23 18:32:42

iTunesIOS 10蘋果
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产www成人| 国产精品久久午夜夜伦鲁鲁 | 日韩在线一区二区三区 | 91精品一区二区三区久久久久 | 国产成人在线一区二区 | 一区二区三区精品视频 | 国产高清精品一区二区三区 | 久久久视频在线 | 911精品美国片911久久久 | 香蕉久久a毛片 | 一本一道久久a久久精品蜜桃 | 亚洲福利在线观看 | 日韩在线视频免费观看 | 国产精品欧美一区二区三区不卡 | 中文字幕免费在线 | 九九免费 | 欧美一区二区视频 | 一区二区在线 | 久久精品网 | 国产成人精品一区二区三区视频 | 久久综合久久综合久久综合 | 欧美综合精品 | 免费一区二区三区在线视频 | 在线不卡视频 | 亚洲欧美成人在线 | 国产精品国产精品国产专区不卡 | 91大神在线看 | 亚洲欧美激情四射 | 欧美精品一区二区三区在线播放 | 亚洲免费一区二区 | 精品婷婷 | 国产精品久久久久久高潮 | 欧美成人精品 | 色在线免费视频 | 97视频在线观看网站 | 日韩手机在线视频 | 日韩一区二区三区在线 | 久久精品高清视频 | 一区二区三区视频在线观看 | 激情五月婷婷在线 | 国产日韩欧美精品一区二区三区 |