Elasticsearch不会DSL没事,来试试SQL吧

网友投稿 768 2023-05-23

Elasticsearch不会DSL没事,来试试SQL吧

Elasticsearch不会DSL没事,来试试SQL吧

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例,最常见的是作为搜索引擎,提供项目中全文搜索。

一提到Elasticsearch,必然需要提到Query DSL,DSL(Domain Specific Language特定领域语言)以JSON请求体的形式,但DSL语法并没有那么直观,如果不经常使用,就会遗忘,等需要用的时候,感觉非常不方便。

今天我们就看下官方提供的X-Pack,它包含一项SQL功能,可对Elasticsearch索引执行SQL查询并以表格格式返回结果。Elasticsearch SQL(6.3版本以后)不仅允许针对Elasticsearch实时执行类似SQL的查询。也可以使用REST接口,或者使用JDBC,保证任何客户端都可以使用SQL对Elasticsearch中的数据进行原生搜索和聚合数据。我们可以将Elasticsearch SQL看作是一种翻译器,它可以将SQL翻译成Query DSL。

下面我们先使用es + kabana体验一下(安装就不说明了)

构建数据

先创建索引,注意es 7.x去掉了type,本文使用的是7.8.0版本的es和kabana。

创建索引

放入文档数据

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" }

下面我们来看下jdbc的操作

JDBC使用SQL查询

引入依赖

   org.elasticsearch.plugin   x-pack-sql-jdbc   7.8.0 

注意该依赖maven中央仓库没有,需要配置仓库地址

jdbc相关代码

执行后,报错如下

那怎么解决呢?

官网提供了我们修改license api的功能,去体验一些新的功能

按照官网操作后,执行前面的jdbc代码,可以得到正确结果

由于jdbc版本使用需要付费,建议在实际项目中,使用DSL或者SQL REST API操作。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:云时代数据库的核心特点
下一篇:TiDB 中的子查询优化技术
相关文章