前言
众所周知,ElasticSearch底层依赖的是lucene,Lucene是apache下的一个开源的全文检索引擎工具包。它为软件开发人员提供一个简单易用的工具包(类库),以方便的在目标系统中实现全文检索的功能。但是用lucene语法来查询数据,查询语句比较繁琐,学习成本略高。在kibana中使用的查询语法适合处理简单查询,面对一些复杂查询的需求只能束手无策。而es-sql插件用我们喜闻乐见的方式来查询数据,大大简化这部分的操作。
kibana查询语法介绍
在Discover页提交一个搜索,你就可以搜索匹配当前索引模式的索引数据了下面是几个示例:
- 简单的文本搜索,直接输入文本字符串。比如,如果你在搜索网站服务器日志,可以输入Safari来搜索各字段中的Safari单词。
- 要搜索特定字段中的值,则在值前加上字段名。比如,你可以输入status:200来限制搜索结果都是在status字段里有200的内容。
- 要搜索一个值的范围,你可以用范围查询语法。比如,要查找4xx的状态码,你可以输入status:[400 TO 499]。【TO要大写】
- 要指定更负责的搜索标准,可以用布尔操作符AND,OR,和NOT【要大写】。比如要查找4xx的状态码,还是php和html结尾的数据,你可以输入status:[400 TO 499] AND (extension:php OR extension:html)。
系统说明
- ES版本:7.xx
- master 节点:3
- client 节点:2,port为【9400】
- data 节点:8
了解过ES运行机制的同学应该知道,client的工作类似于nginx,做请求转发,所以ES集群的防火墙开放访问的是client的端口,kibana链接的也是client节点。
部署插件
我们将es-sql插件部署到两个client节点上面。这里采取的是离线部署,部署步骤:
- 下载插件:github.com/NLPchina/el…
- 解压,并将解压出来的文件夹名称修改为【sql】
- 将sql文件夹拷贝到 elasticsearch/plugins目录下面
- 重启client节点
使用方式
这里简单介绍两种:
- kibana界面的Dev Tools里面输入:GET _sql?sql=select * from member where name = 'John'
- 浏览器地址栏输入:192.168.107.9:9400/_sql?sql=select * from member where name = 'John'
注意,在java代码中,我们也可以使用sql的方式来请求数据,这里就不展示了。