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]

 

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

猜你喜欢

转载自blog.csdn.net/wsdc0521/article/details/106381519