欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-16 08:09:16
...

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

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

翻译成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"
}

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

使用DSL查询

上面转换成的DSL可以直接使用对索引进行查询,效果与第一个里面使用SQL查询是一样的结果:

 

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

命令行模式

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

$ ./bin/elasticsearch-sql-cli
$ ./bin/elasticsearch-sql-cli https://es_host:9200
$ ./bin/elasticsearch-sql-cli https://es_user:aaa@qq.com_host:9200

效果与在kibana中的一样:

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

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]

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

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

 

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

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