一、研究背景
对于大数据测试和数据库测试,经常会同MySQL、ES等数据库“打交道”。对于测试人员来说,MySQLMySQL语法简单易懂、上手方便,但是ES语法相比之下第一眼就会让人觉得“抓脑壳”(那么多字,键盘都得敲坏)。
那有没有什么工具,安装方便、使用简单、具有一定可视化效果,且能够直接使用MySQL语法查询的呢?那当然有了,安排!
这里给大家介绍两款操作ES的chrome插件工具:elasticsearch-head和elasticsearch-sql。可以满足大部分测试人员的测试工作需求,且安装方便、使用简单。
二、工具
elasticsearch-head
elasticsearch-head的最大优点在于可视化操作,操作简单,结果一目了然。
1、 安装方式(推荐chrome插件方式)
1)通过chrome应用商店一键安装Elasticsearch-head插件(中文官网地址:https://chrome.google.com/webstore?hl=zh-CN,英文官网地址:https://chrome.google.com/)。
2)当存在无法访问chrome应用商店的时候,我们可以选择下载插件包的,植入chrome拓展程序文件的形式。
首先,从https://github.com/mobz/elasticsearch-head下载zip包(如下图所示);
其次,解压下载的压缩包;
最后,打开chrome更多工具—>扩展程序—>加载已解压的扩展程序即可。
2、 使用方法
点击chrome浏览器扩展程序即可使用。
3、 支持功能
1)ES集群概览
如下图3所示,支持集群按照“地址排序”、“名称排序”、“类型排序”,支持索引升、降排序,支持索引搜索等。
此外还可点击索引的信息查看索引状态、索引信息,以及关闭、删除、刷新索引等操作。
2)索引
如下图所示,支持索引概览、新建索引。
3)数据预览
如下图所示,支持数据预览,点击索引名即可预览该索引数据。
4)基本查询
如下图所示,支持单个索引的单字段值或多字段值联合查询,支持算子term、range、fuzzy、query_string、missing,返回格式支持json、csv以及table。
5)复合查询
如下图所示,支持POST、GET、PUT、HEAD等REST请求,结果显示支持原始json、图形视图和表格视图。
elasticsearch-sql
elasticsearch-sql的优点在于可以将MySQL的基本语法转换成ES语法直接查询,降低了ES语法的学习成本。
1、 安装方式(推荐chrome插件方式)
同elasticsearch-head一样,可以通过源码地址下载(https://github.com/shi-yuan/elasticsearch-sql-site-chrome)插件压缩包,解压后,导入浏览器扩展程序即可。
2、 支持功能
1)基本SQL操作
2)地理位置查询
3)拓展ES查询功能
4)有限的join查询支持
ES不支持join查询,但elasticsearch-sql提供了部分join操作,包括JOIN和LEFT_JOIN。但值得注意的是:
只有支持2 个表(索引/类型)加入join;
在“ON”上,您能使用“AND”连接;
您必须为表使用别名(acounts a )。
在 Where 上,不要组合两个表的决策树。
例如,这将起作用:WHERE (a.key1>3 OR a.key1<0) AND (b.key2 > 4 OR b.key2<-1),但我们不支持:WHERE (a.key1>3 OR b.key2<0) AND (a.key1 > 4 OR b.key2<-1)。
5)show功能
show可以展示集群和索引的细节,例如:show *可以显示所有索引,show index可以展示索引的类型等信息。
3、 使用方法
点击chrome扩展程序elasticsearch-sql打开ui页面,在文本框输入SQL语句即可。如:
1)直接SQL语法查询
使用show语法展示索引细节:
使用join查询:
2)翻译SQL语法为ES语法
在文本框输入SQL语句,点击“Explain”即可翻译为ES语句,Results会显示翻译结果,例如:
3)其他功能
elasticsearch-sql的界面功能还支持查询结果下载(ExportCSV)、查询结果搜索(Search)以及其他设置(Show Settings)等。
总结
elasticsearch-head和elasticsearch-sql是两款小巧方便的工具,可以作为chrome插件使用,可视化的特点能够满足大部分人对ES的简单操作,此外elasticsearch-sql可以降低测试人员的学习成本,只需要简单的SQL语法即可完成ES数据库操作。
但是,它们自身也存在一定的局限性。例如:elasticsearch-sql针对复杂的SQL语句,尤其是嵌套语句或包含子查询的语句,就显得捉襟见肘。
希望本文的介绍能帮助你简单认识这两个小工具~