激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - Elasticsearch不會DSL沒事,來試試SQL吧

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

2020-12-02 23:24今日頭條低調的干貨君 Sql Server

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

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

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

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

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

今天我們就看下官方提供的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。

創建索引

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

放入文檔數據

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

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

SQL查詢數據

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

SQL語法

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

SELECT select_expr [, ...] 

FROM table_name ] 

WHERE condition ] 

GROUP BY grouping_element [, ...] ] 

HAVING condition] 

ORDER BY expression [ ASC | DESC ] [, ...] ] 

[ LIMIT [ count ] ] 

[ PIVOT ( aggregation_expr FOR column IN ( value [ [ AS ] alias ] [, ...] ) ) ] 

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

POST /_sql/translate 

  "query""SELECT * FROM student LIMIT 10" 

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

下面我們來看下jdbc的操作

JDBC使用SQL查詢

引入依賴

<dependency> 

  <groupId>org.elasticsearch.plugin</groupId> 

  <artifactId>x-pack-sql-jdbc</artifactId> 

  <version>7.8.0</version> 

</dependency> 

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

<repositories> 

        <repository> 

            <id>elastic.co</id> 

            <url>https://artifacts.elastic.co/maven</url> 

        </repository> 

    </repositories> 

jdbc相關代碼

Class.forName("org.elasticsearch.xpack.sql.jdbc.EsDriver"); 

Connection connection = DriverManager.getConnection("jdbc:es://http://127.0.0.1:9200"); 

Statement statement = connection.createStatement(); 

ResultSet resultSet = statement.executeQuery("select name from student"); 

while (resultSet.next()){ 

  System.out.println(resultSet.getString("name")); 

執行后,報錯如下

Exception in thread "main" java.sql.SQLInvalidAuthorizationSpecException: current license is non-compliant for [jdbc] 

    at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection$SqlExceptionType.asException(JreHttpUrlConnection.java:330) 

    at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection.parserError(JreHttpUrlConnection.java:207) 

    at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection.request(JreHttpUrlConnection.java:170) 

    at org.elasticsearch.xpack.sql.client.HttpClient.lambda$post$1(HttpClient.java:106) 

    at org.elasticsearch.xpack.sql.client.JreHttpUrlConnection.http(JreHttpUrlConnection.java:66) 

    at org.elasticsearch.xpack.sql.client.HttpClient.lambda$post$2(HttpClient.java:105) 

    at java.security.AccessController.doPrivileged(Native Method) 

    at org.elasticsearch.xpack.sql.client.HttpClient.post(HttpClient.java:104) 

    at org.elasticsearch.xpack.sql.client.HttpClient.query(HttpClient.java:81) 

    at org.elasticsearch.xpack.sql.jdbc.JdbcHttpClient.query(JdbcHttpClient.java:70) 

    at org.elasticsearch.xpack.sql.jdbc.JdbcStatement.initResultSet(JdbcStatement.java:160) 

    at org.elasticsearch.xpack.sql.jdbc.JdbcStatement.execute(JdbcStatement.java:151) 

    at org.elasticsearch.xpack.sql.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:40) 

    at com.ganhuojun.gracefulshutdown.configuration.Test.main(Test.java:22) 

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

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

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

那怎么解決呢?

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

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产一区二区久久 | 日本中文字幕久久 | 在线中文字幕亚洲 | 久久网站热最新地址4 | 男女生羞羞视频网站在线观看 | 99精品热视频 | 亚洲天堂中文字幕在线观看 | 黄视频免费在线 | 最近免费观看高清韩国日本大全 | 精品国产乱码久久久久久久 | 女人叉开腿让男人桶 | a网站在线 | 国产无遮挡一级毛片 | chinese xvideos gay| 亚洲性夜色噜噜噜7777 | 色操网| 成人毛片在线 | 国产精品久久久不卡 | 国产在线观看91精品 | 一区国产在线观看 | 99精品视频一区二区 | 国产精品成人免费一区久久羞羞 | 亚洲国产精品久久久久久久久 | 激情在线视频 | 久久久久久久国产视频 | 亚洲成人在线免费观看 | 成人在线观看免费观看 | 高清在线观看av | www久久综合 | 久久久久久麻豆 | 99久久精品日本一区二区免费 | 日本免费一区二区三区四区 | 麻豆小视频在线观看 | 亚洲国产精品久久久久久久 | 国产99久久精品一区二区 | 视频一区二区三区在线播放 | 中文字幕22页 | 日本高清在线免费 | 一级做人爱c黑人影片 | 亚洲第一成人av | 深夜视频在线观看 |