在介绍MOQL的上一篇文章《SQL to ElasticSearch DSL》里,提到了如何将SQL语法转换为ElasticSearch DSL的用法。这期间还出现乌龙事件,就是最新的代码并未提交到GitHub上,功能用不了,如今已经连同本次支持的内容全部更新提交。

上次介绍,MOQL支持在一定的语法集合范围内将SQL语法转换为ElasticSearch的DSL。但这个转换带来的易用性还不够。因为ElasticSearch的Java API不支持直接使用DSL直接查询,而ElasticSearch的HTTP API虽然支持直接使用DSL进行查询,但返回结果为json格式,还需要进行解析,且Query与Aggs的返回结果结构不同,需要一一进行解析,相当的繁琐。为使对ElasticSearch的访问更加方便,目前MOQL又添加了可以直接通过SQL调用就能获得访问结果的数据查询器EsDataQuerier。示例代码如下:

EsDataQuerier dataQuerier = new EsDataQuerier();
String[] serverIps = new String[] {"127.0.0.1"}; Properties properties = new Properties();//properties.put(EsDataQuerier.HTTP_PORT, 9200);
//创建到ES服务器的连接dataQuerier.connect(serverIps, properties);
String sql = "select ip.fw, ip.pri, ip.recorder, ip.proto from ip3 ip where ip.pri = 6 order by ip.src LIMIT 1000";try {//用指定sql语句访问ES服务,返回查询结果RecordSet recordSet = dataQuerier.query(sql);outputRecordSet(recordSet);} catch (IOException e) {e.printStackTrace();}

RecordSet为一个类似与ResultSet的对象,用于存放结果集。其中,outputRecordSet方法的实现如下,可以简单看出RecordSet对象的结构。

void outputRecordSet(RecordSet recordSet) {//recordSet的列头结构描述RecordSetDefinition recordSetDefinition = recordSet.getRecordSetDefinition();StringBuffer sbuf = new StringBuffer();//打印结果集列头for (ColumnDefinition column : recordSetDefinition.getColumns()) {sbuf.append(column.getName());sbuf.append("    ");}System.out.println(sbuf.toString());//输出结果集,结果集是一个数组的集合。集合的长度为结果集长度。每个数组为一条记录。for (Object[] record : recordSet.getRecords()) {StringBuffer sb = new StringBuffer();for (int i = 0; i < record.length; i++) {if (record[i] != null) {sb.append(record[i].toString());} else {sb.append("NULL");}sb.append(" ");}System.out.println(sb.toString());}System.out.println("------------------------------------------------");
}

一步到位,用SQL检索ElasticSearch相关推荐

  1. SQL to ElasticSearch DSL改进

    最近团队在使用MOQL的SQL到ElasticSearch DSL转换时提出,该转换器不能完成深度分页场景的应用.而ElasticSearch为该类应用提供了"search_after&qu ...

  2. sql 列求和_Excel VBA高级编程SQL检索(二)合并相同项并求和

    上一篇我们已经试过用Excel 自带的索引完成了一次SQL检索的操作,今天小编带你用VBA实现SQL检索,并实现相同项求和的功能 SELECT 字段名1,SUM(字段名2) FROM [原始数据$]) ...

  3. SQL检索MongoDB的轻量级解决方案

    关于使用SQL访问MongoDB的解决方案,网络上已经可以查到很多.有相当一部分都是比较重的,有的需要安装插件,通过插件界面进行查询交互的,如:DataGrip:有的需要安装分布式计算引擎,并能提供更 ...

  4. SQL to ElasticSearch DSL

    众所周知ElasticSearch目前是一个应用最为广泛的分布式搜索与分析引擎,它的功能强大,能够已很高的性能访问大规模数据.它拥有强大的查询分析语法,能够完成模糊查询.精准查询及聚集计算等诸多功能的 ...

  5. 神兵利器——使用LINQ to SQL检索和操作数据库

    自.NET 3.0开始,LINQ(Language Integrated Query,整合查询语言)便逐渐出现在.NET开发的各个角落,它不仅提供了一种用于快速检索结构化标记语言(如XML)的方法,而 ...

  6. Excel VBA高级编程-SQL检索(二)合并相同项并求和

    大家好,我是陈小虾,是一名自动化方向的IT民工.写博客是为了记录自己的学习过程,通过不断输出倒逼自己加速成长.但功能说明:由于水平有限,博客中难免会出现一些BUG,或者有更优方案恳请各位大佬不吝赐教! ...

  7. SQL to Elasticsearch java code

    把Elasticsearch当成Database用,因为Elasticsearch不支持SQL,就需要把SQL转换成代码实现. 1.按某个field group by查询count SELECT fi ...

  8. 尚硅谷-SpringBoot高级-检索-Elasticsearch快速入门

    前面我们安装好了ElasticSearch,我以后就简称他为ES,而一些人还不知道基本的使用,那我们接下来做一个快速入门,了解一下他的使用方法,以及一些基本概念,方便我们后来整合,那么要学习ES最好的 ...

  9. SpringBoot高级-检索-Elasticsearch简介安装

    SpringBoot与检索,主要介绍使用ElasticSearch,包括我们来整合SpringBoot来进行操作,我们说全文检索功能,是我们现在非常常见的一个需求,我们这个开源的ElasticSear ...

最新文章

  1. python 自动化微信小程序_appium+python 微信小程序的自动化
  2. 【程序员必看】如何用Python从0开始创建一个区块链?
  3. BZOJ 4516 [Sdoi2016] 生成魔咒
  4. LeetCode 1011. 在 D 天内送达包裹的能力(二分查找)
  5. CSS属性(display)
  6. 解决mac使用svn: E170000: Unrecognized URL scheme for h
  7. python selenium中文文档-selenium-python中文版文档
  8. 花瓣网方砖布局 图片内容无限加载 用户体验才是王道
  9. Intel IPP安装和安装测试
  10. (ZT)算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
  11. [Linux网络编程]高并发-Epoll模型
  12. 计算机拓扑结构网状图,网络拓扑结构大全和图片(星型、总线型、环型、树型、分布式、网状拓扑结构)...
  13. 目标检测制作自己的VOC2007数据集
  14. 漫画人脸检测 | 全局和局部信息融合的深度神经网络(文末源码)
  15. 教你看懂Code128条形码
  16. 图像处理-图像金字塔
  17. SpringCloud微服务项目实战 - 5.自媒体文章审核
  18. 自定义函数实现对字符串的复制操作
  19. 【数理统计】均值检验(双侧、单侧)和区间估计
  20. tsd3dmapper软件使用方法_Mapper

热门文章

  1. SharePoint:扩展DVWP - 第34部分:使用图标形式的表单操作链接
  2. 浅谈C#中virtual和abstract的区别
  3. 圆投影匹配算法描述及实现
  4. 测试原理_耐压测试仪绝缘电阻测试仪基本原理与选用
  5. python123第四章第五题_Python123
  6. getset原子性 redis_RedisAPI原子性操作及原理解析
  7. php cms选择,php cms 选择哪个好?
  8. python pip工具命令_转载 Python 安装setuptools和pip工具操作方法(必看)
  9. jmeter安装 java,Windows下安装jmeter图文教程
  10. ctfd的mysql导入_centos7 CTFd平台搭建过程