[转帖]Elasticsearch-sql 用SQL查询Elasticsearch

elasticsearch,sql,查询 · 浏览次数 : 0

小编点评

## Elasticsearch-SQL 插件简介 Elasticsearch-sql 是一个可以用于搜索和分析 Elasticsearch 数据的开源插件。它支持 SQL 查询,可以将 SQL 查询转换为 Elasticsearch 查询。 **安装方法** 1. 下载插件: - 访问 GitHub 项目页面:`github.com/NLPchina/elasticsearch-sql` - 下载最新版本 - 使用 `sh -c` 命令安装: ``` cd ~/elasticsearch-2.1.1$./bin/plugin install ``` - 验证安装成功: ``` ./bin/plugin install --version ``` 2. 设置配置: - 创建一个名为 `sql.properties` 的文件,并添加以下内容: ```properties # SQL 数据库连接配置 spring.datasource.url=your_sql_db_url spring.datasource.username=your_sql_db_username spring.datasource.password=your_sql_db_password spring.sql.query.timeout=60 ``` **SQL 查询** 1. 启动 Elasticsearch-sql 服务: - 默认情况下,服务会监听 9200端口 - 如果使用自定义端口,请修改 `spring.sql.query.port` 配置 2. 连接到 Elasticsearch: - 在你的代码中引入 `org.elasticsearch.client.IndicesClient` 和 `org.elasticsearch.client.SearchClient` 类 - 使用 `client.prepareQuery()` 方法创建查询 - 使用 `client.query(query)` 方法执行查询 **示例** ```java // 从 Elasticsearch 中获取所有文档 Index index = client.getIndex("index_name"); SearchResponse searchResponse = index.search(query); // 获取查询结果 ScoreDoc scoreDoc = searchResponse.scoreDocs.get(0); String source = scoreDoc.get("source"); // 打印结果 System.out.println(source); ``` **其他功能** - 支持多个索引和类型 - 支持聚合函数和筛选 - 支持 геоospatial查询(通过 `geo` 关键字) **注意** - Elasticsearch-sql 需要与 Elasticsearch 版本 2.1.1 相关。 - 使用 SQL 查询之前,请确保您的代码能够连接到 Elasticsearch服务器。

正文

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相似的内容:

[转帖]Elasticsearch-sql 用SQL查询Elasticsearch

https://www.cnblogs.com/kangoroo/p/7273493.html https://www.cnblogs.com/kangoroo/p/7273493.html Elasticsearch的查询语言(DSL)真是不好写,偏偏查询的功能千奇百怪,filter/query/

[转帖]Elasticsearch 技术分析(五):如何通过SQL查询Elasticsearch

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

[转帖]ElasticSearch Stack 各个版本收费情况

https://blog.csdn.net/vkingnew/article/details/91549698#commentBox 注释:绿色表示支持。 从 Elastic Stack 6.8 和 7.1 版本开始,Elasticsearch 的核心安全功能(TLS 加密、原生和基于文件的身份验证

[转帖]Elasticsearch 技术分析(七): Elasticsearch 的性能优化

https://www.cnblogs.com/jajian/p/10176604.html 硬件选择# Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch.ym

[转帖]Elasticsearch部署配置建议

1: 选择合理的硬件配置:尽可能使用 SSD Elasticsearch 最大的瓶颈往往是磁盘读写性能,尤其是随机读取性能。使用SSD(PCI-E接口SSD卡/SATA接口SSD盘)通常比机械硬盘(SATA盘/SAS盘)查询速度快5~10倍,写入性能提升不明显。 对于文档检索类查询性能要求较高的场景

[转帖]Elasticsearch-索引性能调优

1:设置合理的索引分片数和副本数 索引分片数建议设置为集群节点的整数倍,初始数据导入时副本数设置为 0,生产环境副本数建议设置为 1(设置 1 个副本,集群任意 1 个节点宕机数据不会丢失;设置更多副本会占用更多存储空间,操作系统缓存命中率会下降,检索性能不一定提升)。单节点索引分片数建议不要超过

[转帖]Elasticsearch 的 30 个调优最佳实践!

Elasticsearch 的 30 个调优最佳实践! https://zhuanlan.zhihu.com/p/406264041 ES 发布时带有的默认值,可为 es 的开箱即用带来很好的体验。全文搜索、高亮、聚合、索引文档 等功能无需用户修改即可使用,当你更清楚的知道你想如何使用 es 后,你

[转帖]ElasticSearch 最全详细使用教程

https://zhuanlan.zhihu.com/p/449555826?utm_source=weibo&utm_medium=social&utm_oi=27124941455360&utm_content=snapshot 导读:本文介绍了ElasticSearch的必备知识:从入门、索引

[转帖]elasticsearch 8.0 linux安装部署

1. 下载安装包 https://www.elastic.co/cn/downloads/elasticsearch 选择下载linux版本,elasticsearch-8.0.0-linux-x86_64.tar.gz 2. 系统参数修改 limits.conf和sysctl.conf vim /

[转帖]elasticsearch-create-enrollment-tokenedit

https://www.elastic.co/guide/en/elasticsearch/reference/current/create-enrollment-token.html The elasticsearch-create-enrollment-token command creates