成人免费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

2012-07-03 09:38:42

前端

2020-12-15 10:24:05

2022-12-30 09:12:55

查詢es搜索值

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技術棧公眾號

主站蜘蛛池模板: 久草免费在线视频 | 一区二区在线看 | 国产一区 | 成人精品福利 | 一区二区三区四区在线视频 | 91免费观看国产 | 亚洲一区二区久久 | 男人的天堂视频网站 | 先锋av资源在线 | 亚洲综合热 | 久久国 | 农村真人裸体丰满少妇毛片 | 欧美一区二区三区在线观看 | 毛片在线看片 | 午夜精品一区 | 日韩第一区 | 亚洲精品视频在线 | www.av在线 | 亚洲欧洲中文 | 国产精品.xx视频.xxtv | 亚洲精品区 | 久久久久久国产精品免费免费 | 男女午夜免费视频 | 亚洲一区三区在线观看 | 精品欧美一区二区在线观看视频 | 激情毛片 | 久久综合伊人 | 成人免费视频网站在线观看 | 一区二区三区四区在线 | 久久最新精品视频 | 五月婷婷在线播放 | caoporn视频 | 激情五月婷婷 | 亚洲精选久久 | 国产精品国产馆在线真实露脸 | 色精品 | 日韩看片 | 日韩中文一区二区三区 | 日本中文在线视频 | 国产精品揄拍一区二区 | 中文字幕在线播放第一页 |