ElasticSearch-SQL使用方式总结
1.ES-SQL插件
此插件提供了es 的类sql查询的相关接口。支持绝大多数的sql查询支持
github地址:https://github.com/NLPchina/elasticsearch-sql
环境准备
需安装elasticsearch node.js npm
下载安装
进入es根目录,执行如下命令(注意插件版本号需要同自身es版本保持一致)
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.5.1.0/elasticsearch-sql-5.5.1.0.zip
or
./bin/elasticsearch-plugin installfile:/elasticsearch-sql-5.5.1.0.zip
下载完毕后解压,并将解压后文件放至elasticsearch/plugins/sql下
下载es-sql的客户端
下载地址:https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip
下载完毕后解压,切换至解压目录的site-server中,执行
npm install express --save
为防止端口冲突,可在site-server/site_configuration.json配置文件中修改启动服务的端口
完成之后在site-server目录下执行
node node-server.js
箭头指向位置为es地址,一般为localhost:9200,红框内可输入sql语句,点击search查询
第二种查询方式为通过http请求 如: curl -XPOST http://localhost:9200/_sql -d 'SELECT * FROM .kibana_1'
注:插件还可支持delete功能,执行语法同SQL
2.ElasticSearch v6.3之后自带SQL查询
该SQL模块属于X_pack的一部分,主要特点如下:
允许在kibana以及elasticsearch中使用 SQL 查询其中的数据
支持 REST 、 JDBC 以及命令行来来下数据,任何客户端都可以使用 SQL 在 Elasticsearch 中本地搜索和聚合数据
要求 ES版本必须为6.3.0及以上
使用说明
REST API方式:
curl -X POST "localhost:9200/_xpack/sql?format=txt" -H 'Content-Type: application/json' -d'
{
"query": "SELECT * FROM library ORDER BY page_count DESC LIMIT 5"
}'
返回结果如下
上面通过format=txt指定了返回数据的形式,也可写成format=json来返回json格式数据
其他的格式支持包括:yaml、smile、cbor 、txt、csv、tsv等等,皆可以通过format参数指定
6.3版本同时提供了Translate API接口,.可以通过这个接口查看es如何将输入的SQL转化成DSL语句
执行:
curl -X POST "localhost:9200/_xpack/sql/translate" -H 'Content-Type: application/json' -d'
{
"query": "SELECT * FROM library ORDER BY page_count DESC",
"fetch_size": 10
}'
返回结果:
Kibana方式:
"query":" sql查询语句"
SQL CLI 命令行方式:
命令行启动:./bin/elasticsearch-sql-cli
界面如下:
相关sql函数使用详见
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/xpack-sql.html