ELK系列(十二)、使用SQL查詢ElasticSearch7.7.0

ES的DSL可能對很多人來說有學習成本,但SQL相信每個開發無論是應用開發,大數據開發還是數據分析人員應該都是最熟悉的,本篇就介紹一下如何使用es7的sql功能對索引數據進行查詢。

ELK系列(一)、安裝ElasticSearch+Logstash+Kibana+Filebeat-v7.7.0

ELK系列(二)、在Kibana中使用RESTful操作ES庫

ELK系列(三)、安裝Logstash插件及打包離線安裝包

ELK系列(四)、Logstash讀取nginx日誌寫入ES中

ELK系列(五)、Logstash修改@timestamp時間爲日誌的產生時間

ELK系列(六)、修改Nginx日誌爲Json格式並使用Logstash導入至ES

ELK系列(七)、Filebeat+Logstash採集多個日誌文件並寫入不同的ES索引中

ELK系列(八)、使用Filebeat+Redis+Logstash收集日誌數據

ELK系列(九)、配置ES和Kibana的用戶密碼

ELK系列(十)、ES中文分詞器IK插件安裝和配置遠程詞庫熱加載

ELK系列(十一)、ElasticSearch7.7.0插件es-head安裝及使用

-------------------------------在ES7中使用SQL查詢數據------------------------------

查詢數據

下面的命令會將SQL在後臺轉爲DSL命令查詢索引:

#二維表返回
POST /_sql?format=txt
{
    "query": "SELECT host,ip,machine.os,bytes FROM kibana_sample_data_logs  where machine.os='win 8' and host like 'cdn.%.org' order by 4 desc limit 50"
}

#formart返回類型支持很多,可參考官方文檔:
有csv,txt,tsv,json,yml等等
https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-rest-format.html

翻譯成DSL

下面的命令可以將SQL轉爲DSL:

POST /_sql/translate
{
    "query": "SELECT host,ip,machine.os,bytes FROM kibana_sample_data_logs  where machine.os='win 8' and host like 'cdn.%.org' order by 4 desc limit 50"
}

使用DSL查詢

上面轉換成的DSL可以直接使用對索引進行查詢,效果與第一個裏面使用SQL查詢是一樣的結果:

 

命令行模式

使用下面的命令進入es-sql的命令行模式:

$ ./bin/elasticsearch-sql-cli
$ ./bin/elasticsearch-sql-cli https://es_host:9200
$ ./bin/elasticsearch-sql-cli https://es_user:es_pwd@es_host:9200

效果與在kibana中的一樣:

JDBC模式

下載jar包:https://www.elastic.co/cn/downloads/jdbc-client

或者使用maven:

<repositories>
  <repository>
    <id>elastic.co</id>
    <url>https://artifacts.elastic.co/maven</url>
  </repository>
</repositories>

<dependency>
  <groupId>org.elasticsearch.plugin</groupId>
  <artifactId>x-pack-sql-jdbc</artifactId>
  <version>7.7.0</version>
</dependency>

在DBeaver中配置ES7的連接,並測試,會報錯,原因是因爲白金版才支持JDBC的功能:

Query execution failed

原因:
 SQL 錯誤: current license is non-compliant for [jdbc]

 

 

希望本文對你有幫助,請點個贊鼓勵一下作者吧~ 謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章