https://www.cnblogs.com/kangoroo/p/7273493.html
https://www.cnblogs.com/kangoroo/p/7273493.html

Elasticsearch的查询语言(DSL)真是不好写,偏偏查询的功能千奇百怪,filter/query/match/agg/geo各种各样,不管你是通过封装JSON还是通过python/java的api进行封装,都非常不方便。

最近发现了一个插件,Elasticsearch-SQL可以用sql查询Elasticsearch,感觉这个轮子造的真是好。

Elasticsearch-sql的项目地址:https://github.com/NLPchina/elasticsearch-sql

1、简介

Elasticsearch-sql实现的功能:

1)插件式的安装

2)SQL查询

3)超越SQL之外的查询

4)对JDBC方式的支持

2、插件式的安装

安装方法和elasticsearch-head的安装方法类似:

我们使用的es版本是2.1.1,如果你用的是不同的版本,可以在https://github.com/NLPchina/elasticsearch-sql找到支持。

$ cd ~/elasticsearch-2.1.1
$./bin/plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/2.1.1.1/elasticsearch-sql-2.1.1.1.zip

如果成功,命令行打印如下东东:

[bigdata-dw@bigdata-arch-client10 es2.1.1]$ ./bin/plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/2.1.1.1/elasticsearch-sql-2.1.1.1.zip
-> Installing from https://github.com/NLPchina/elasticsearch-sql/releases/download/2.1.1.1/elasticsearch-sql-2.1.1.1.zip...
Trying https://github.com/NLPchina/elasticsearch-sql/releases/download/2.1.1.1/elasticsearch-sql-2.1.1.1.zip ...
Downloading .................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE
Verifying https://github.com/NLPchina/elasticsearch-sql/releases/download/2.1.1.1/elasticsearch-sql-2.1.1.1.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed sql into /home/bigdata-dw/es2.1.1/plugins/sql

3、SQL查询

安装成功以后我们就可以通过sql查询ES了。

es-sql还提供了web页面,访问方式是http://10.93.18.34:9200/_plugin/sql/(如果你使用head,那么你的head访问应该是http://10.93.18.34:9200/_plugin/head/)

这里的ip和port是你安装es的主机和http端口。

访问到的页面是这样的

那么你现在有两种方式可以执行你的SQL:

1)在搜索框里直接输入你的sql了。(我的版本行尾不要写“;”否则会解析不了SQL)

2)通过http请求如

curl -XPOST http://10.93.18.34:8049/_sql -d 'SELECT * FROM audit where dDelay=-2053867461'

你会收到一个json格式的返回

{"took":2,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":12.549262,"hits":[{"_index":"audit","_type":"kafka","_id":"AVzzK-h_V9seINxbZ2Ox","_score":12.549262,"_source":{"timestamp":"1498726500000","dCount":680008,"dDelay":-2053867461,"cDelay":0,"clanName":"DJ_elk_common","checkTime":1498728360063,"cCount":0,"pCount":680008,"topicName":"DJ_elk_common_clean","pDelay":370356423}}]}}

下面我们简单说4种类型的sql的书写方式:

1)query

SELECT * FROM bank WHERE age >30 AND gender = 'm'

2)aggregation

select COUNT(*),SUM(age),MIN(age) as m, MAX(age),AVG(age)
FROM bank GROUP BY gender ORDER BY SUM(age), m DESC

3)delete

DELETE FROM bank WHERE age >30 AND gender = 'm'

4)geo

SELECT * FROM locations WHERE GEO_BOUNDING_BOX(fieldname,100.0,1.0,101,0.0)

5)需要指定index+type

  SELECT * FROM indexName/type

6)如何指定路由

select /*! ROUTINGS(salary) */ sum(count)  from index where type="salary"

4、对JDBC的支持

上述查询方式不管是直接在web上输入sql还是通过http请求。elasticsearch-sql还支持通过jdbc进行编程。

这个还没有研究,抽空研究一下再回来。

[转帖]Elasticsearch-sql 用SQL查询Elasticsearch的更多相关文章

  1. 使用SQL语法来查询Elasticsearch:Elasticsearch-SQL插件

    简介 Elasticsearch-SQL是Elasticsearch的一个插件,它可以让我们通过类似SQL的方式对Elasticsearch中的数据进行查询.项目地址是:https://github. ...

  2. Elasticsearch-sql 用SQL查询Elasticsearch

    Elasticsearch的查询语言(DSL)真是不好写,偏偏查询的功能千奇百怪,filter/query/match/agg/geo各种各样,不管你是通过封装JSON还是通过python/java的 ...

  3. Elasticsearch通关教程(五):如何通过SQL查询Elasticsearch

    前言 这篇博文本来是想放在全系列的大概第五.六篇的时候再讲的,毕竟查询是在索引创建.索引文档数据生成和一些基本概念介绍完之后才需要的.当前面的一些知识概念全都讲解完之后再讲解查询是最好的,但是最近公司 ...

  4. Elasticsearch使用系列-基本查询和聚合查询+sql插件

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...

  5. Flink SQL结合Kafka、Elasticsearch、Kibana实时分析电商用户行为

    body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...

  6. ElasticSearch(6)-结构化查询

    引用:ElasticSearch权威指南 一.请求体查询 请求体查询 简单查询语句(lite)是一种有效的命令行_adhoc_查询.但是,如果你想要善用搜索,你必须使用请求体查询(request bo ...

  7. 【转帖】刘备三顾茅庐,请Elasticsearch出山

    刘备三顾茅庐,请Elasticsearch出山 2019-08-08 18:31 https://www.sohu.com/a/332454886_463994?spm=smpc.author.fd- ...

  8. Elasticsearch入门教程(五):Elasticsearch查询(一)

    原文:Elasticsearch入门教程(五):Elasticsearch查询(一) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...

  9. elasticsearch 基础 —— 请求体查询

    请求体查询 简易 查询 -query-string search- 对于用命令行进行即席查询(ad-hoc)是非常有用的. 然而,为了充分利用查询的强大功能,你应该使用 请求体 search API, ...

  10. elasticsearch要点及常用查询

    目录 elasticsearch要点及常用查询 查询与过滤 明确查询和过滤各自的优缺点,以及适用场景. 性能上的差异 适用场景 1.kibana 中操作es-查询 Mapping映射基础 mappin ...

随机推荐

  1. 云图说|图解云消息服务KooMessage

    摘要:云消息服务(KooMessage)是提供数字化营销新入口,覆盖全行业.全场景.全终端的一站式富媒体消息服务. 本文分享自华为云社区<[开天aPaaS]图解云消息服务KooMessage&g ...

  2. 5步教你将MRS数据导入DWS

    摘要:GaussDB(DWS)支持在相同网络中,配置一个GaussDB(DWS)集群连接到一个MRS集群,然后将数据从HDFS中的文件读取到GaussDB(DWS). MapReduce服务(MapR ...

  3. 云小课|打造企业数据“高内聚,低耦合”--试试GaussDB(DWS)逻辑集群,实现数据物理隔离

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:逻辑集群是基于No ...

  4. Java注解(批注)的基本原理

    为什么要使用注解? 早期版本的Spring是通过XML文件的形式对整个框架进行配置的,一个缩减版的配置文件如下 <?xml version="1.0" encoding=&q ...

  5. [BitSail] Connector开发详解系列三:SourceReader

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 Source Connector 本文将主要介绍负责数据读取的组件SourceReader: SourceRead ...

  6. 通义千问,阿里版ChatGPT,拿到邀请码了

    大家好,我是章北海mlpy 通义千问是阿里巴巴推出的一个大型预训练模型,是达摩院自主研发的超大规模语言模型,能够回答问题.创作文字,还能表达观点.撰写代码. 昨天中午,阿里云通过官方微信公众号对旗下的 ...

  7. WPF ElementHost 内存泄露问题

    无意中发现,WPF ElementHost 控件如果未正确释放,会存在内存泄露问题.解决方法如下: xaml代码: <Grid x:Name="grid"> <W ...

  8. maven 强制使用本地仓库

    pom 文件添加如下内容: <repositories> <repository> <id>alimaven</id> <name>aliy ...

  9. 邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站

    活动简介 "阿里云云原生 Serverless 技术实践营 " 是一场以 Serverless 为主题的开发者活动,活动受众以关注 Serverless 技术的开发者.企业决策人. ...

  10. 实战指南 | Serverless 架构下的应用开发

    作者 | 刘宇.田初东.卢萌凯.王仁达 UC Berkeley认为Serverless架构的出现过程类似于40多年前从汇编语言转向高级语言的过程,在未来Serverless架构的使用会飙升,或许服务器 ...