ElasticSearch-SQL插件介绍

159 阅读2分钟

前言

众所周知,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节点上面。这里采取的是离线部署,部署步骤:

  1. 下载插件:github.com/NLPchina/el…
  2. 解压,并将解压出来的文件夹名称修改为【sql】
  3. 将sql文件夹拷贝到 elasticsearch/plugins目录下面
  4. 重启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的方式来请求数据,这里就不展示了。