1、查看sql插件github
https://github.com/NLPchina/elasticsearch-sql
2、安装(7.1版本后已经内置可以直接使用)
也可以直接去github上下载放到
下载插件
版本要与es版本对应
将插件压缩包里的文件解压到/opt/elasticsearch-5.6.16/plugins/sql目录下
或者直接用命令下载安装:
1、cd elasticsearch #进入目录 2、./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.3.0/elasticsearch-sql-5.4.3.0.zip
将sql文件夹的权限赋权给es用户
chown -R es:elasticsearch /opt/elasticsearch-5.6.16/plugins/sql
然后重启es 即可。
3、下载SQL的Server,方便可视化操作sql
wget https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip
或者直接下解压:
https://github.com/DILIPCHIRU/es-sql-site-standalone
4、解压编译安装
unzip es-sql-site-standalone.zip cd site-server/ npm install express --save
5、修改启动端口,然后启动server
1、修改SQL的Server的端口 vi site_configuration.json 2、启动服务 node node-server.js
6、访问前端
那么你现在有两种方式可以执行你的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进行编程。
这个还没有研究,抽空研究一下再回来。
5. 7.1.0版本之后
7.1.0版本之后可以直接使用kibana来执行sql
直接在Kibana的Dev Tools中运行如下命令即可:
注意:本文归作者所有,未经作者允许,不得转载