使用SQL语句查询Elasticsearch索引数据

阅读: 评论:0

使⽤SQL语句查询Elasticsearch索引数据
Elasticsearch 的官⽅查询语⾔是 Query DSL,存在毕竟有存在的道理,存在即合理。SQL 作为⼀个数据库查询语⾔,它语法简洁,书写⽅便⽽且⼤部分服务端程序员都清楚了
解和熟知它的写法。但是作为⼀个 ES 萌新来说,就算他已经是⼀位编程界的⽼江湖,但是如果他不熟悉 ES ,那么他如果要使⽤公司已经搭好的 ES 服务,他必须要先学习
Query DSL,学习成本也是⼀项影响技术开发进度的因素⽽且不稳定性⾼。但是如果 ES 查询⽀持 SQL的话,那么也许就算他是⼯作⼀两年的同学,他虽然不懂ES的复杂概念,
他也能很好的使⽤ ES ⽽且顺利的参加到开发的队伍中,毕竟SQL 谁不会写呢?
Elasticsearch-SQL不属于 Elasticsearch 官⽅的,它是 NLPChina(中国⾃然语⾔处理开源组织)开源的⼀个 ES 插件,主要功能是通过 SQL 来查询 ES,其实它的底层是通过紫外可见漫反射光谱
解释 SQL,将SQL 转换为 DSL 语法,再通过DSL 查询。
安装插件
在5.0之后(包括6.x)的安装⽅式为:elasticsearch-plugin install
因为elasticsearch使⽤的是6.2.4的版本,所以插件也要使⽤相同版本的,具体可以在github⽹址上查看
./bin/elasticsearch-plugin install /NLPchina/elasticsearch-sql/releases/download/6.2.4.0/elasticsearch-sql-6.2.4.0.zip
如果我们安装不成功,我们可以直接下载的压缩包,然后解压,完成之后重命名⽂件夹为sql,放到 ES 的安装路径的plugins⽬录中,例如:..\elasticsearch-6.2.4\plugins\sql。
完成此操作后,需要重新启动Elasticsearch服务器,否则会报错:Invalid index name [sql], must not start with '']; ","status":400}。
前端可视化界⾯
Elasticsearch-SQL 插件提供了可视化的界⾯,⽅便你执⾏SQL查询
⽽在 elasticsearch 5.x/6.x,这需要安装 node.js 和,然后像这样启动web前端:
wget /NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip
unzip es-sql-site-standalone.zip
cd site-server
# 需要事先安装好nodejs
npm install express --save
node node-server.js  # 可以通过查看下⾯的后台运⾏命令使⽤
# 端⼝被占⽤的话修改端⼝号
# 后台启动
# 浏览器访问:ip:8080进⾏访问
# 右上⾓为es的地址和端⼝,最后的/不能省略
# 可以把es地址配置⼀个域名,⽤nginx反向代理⼀下,以后连接的话使⽤域名,不直接使⽤ip:port了,这个有待测试
1. 端⼝号被占⽤
默认端⼝是8080,需要修改的话可以改site-server/site_configuration.json⽂件
{
"port":8880
荸荠削皮机}
2. 如果使⽤了X-Pack,那么还涉及到⽤户名密码等问题。参考以下配置:
修改ES配置⽂件/etc/l,增加以下⼏⾏:
未正确配置ES的地址:
音频切换器Error: "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /_sql</pre>\n</body>\n</html>\n"
3. l中未正确配置s:
报错提⽰:
Error: Error occured! response is not avalible.
解决办法:
简易车棚到config⽂件夹下的l,在⽂件的末尾添加如下内容:火锅炉具
4. ⽤户名或密码错误:
Error: {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/_sql]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"miss 5. 问题:若是连接其他主机的es进⾏查询,会报错:
{"error":"Incorrect HTTP method for uri [/_sql] and method [POST], allowed: [DELETE, HEAD, GET, PUT]","status":405}
不知道是不是不能连接其他主机还是其他主机创建的索引有问题,还有待研究!
6. web页⾯右上⾓⽂本框中连接地址为es节点查询地址, 该地址最后⼀定得是/才⾏
7. nodejs程序后台运⾏
# 安装forever
npm install -g forever
# 启动
forever start node-server.js    //node-server.js 是你要启动的js⽂件
# 查看
forever list    //会列出forever正在运⾏的服务脚本
# 停⽌
forever stop index.js  //停⽌服务运⾏
# 获取帮助信息
forever --help
使⽤⽅式
查询⽅式1:
直接在浏览器中输⼊sql查询语句
192.168.0.254:9200/_sql?sql=SELECT * FROM rforder-idx limit 6
查询⽅式2:
使⽤web界⾯,输⼊sql查询语句
192.168.0.254:8880/
查询⽅式3:
使⽤⾕歌浏览器插件
/shi-yuan/elasticsearch-sql-site-chrome
防喷网

本文发布于:2023-05-16 04:55:44,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/101226.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   地址   后台   插件   问题   连接   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图