Solr高效利用:Solr实现SQL的查询与统计

本文通过实例展示了如何将SQL查询语句转换为Solr查询,包括选择特定字段、过滤条件、排序与限制结果数等操作,并对比了查询结果,帮助理解Solr的查询功能。
摘要由CSDN通过智能技术生成

 

Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala,只要熟悉SQL,就可以熟练地使用Impala来执行查询与分析的功能。不过Impala的SQL和关系数据库的SQL还是有一点微妙地不同的。
下面,我们设计一个表,通过该表中的数据,来将SQL查询与统计的语句,使用Solr查询的方式来与SQL查询对应。这个翻译的过程,是非常有趣的,你可以看到Solr一些很不错的功能。
用来示例的表结构设计,如图所示:
<ignore_js_op>


下面,我们通过给出一些SQL查询统计语句,然后对应翻译成Solr查询语句,然后对比结果

查询对比
条件组合查询
SQL查询语句:
  1. SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type
  2. FROM v_i_event
  3. WHERE prov_id = 1 AND net_type = 1 AND area_id = 10304 AND time_type = 1 AND time_id >= 20130801 AND time_id <= 20130815
  4. ORDER BY log_id LIMIT 10;
复制代码

查询结果,如图所示:
<ignore_js_op>
Solr查询URL:
  1.         http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type&fq=prov_id:1 AND net_type:1 AND area_id:10304 AND time_type:1 AND time_id:[20130801 TO 20130815]&sort=log_id asc&start=0&rows=10
复制代码

查询结果,如下所示:
  1. <response>
  2. <lst name="responseHeader">
  3.         <int name="status">0</int>
  4.         <int name="QTime">4</int>
  5.     </lst>
  6. <result name="response" numFound="77" start="0">
  7.         <doc>
  8. <int name="log_id">6827</int>
  9. <long name="start_time">1375072117</long>
  10. <long name="end_time">1375081683</long>
  11.             <int name="prov_id">1</int>
  12. <int name="city_id">103</int>
  13. <int name="area_id">10304</int>
  14. <int name="idt_id">11002</int>
  15.             <int name="cnt">0</int>
  16. <int name="net_type">1</int>
  17. </doc>
  18. <doc>
  19.             <int name="log_id">6827</int>
  20.             <long name="start_time">1375072117</long>
  21.             <long name="end_time">1375081683</long>
  22. <int name="prov_id">1</int>
  23. <int name="city_id">103</int>
  24. <int name="area_id">10304</int>
  25.             <int name="idt_id">11000</int>
  26. <int name="cnt">0</int>
  27.             <int name="net_type">1</int>
  28. </doc>
  29.         <doc>
  30.             <int name="log_id">6851</int>
  31.             <long name="start_time">1375142158</long>
  32.             <long name="end_time">1375146391</long>
  33.             <int name="prov_id">1</int>
  34.             <int name="city_id">103</int>
  35. <int name="area_id">10304</int>
  36. <int name="idt_id">14001</int>
  37.             <int name="cnt">5</int>
  38. <int name="net_type">1</int>
  39. </doc>
  40. <doc>
  41. <int name="log_id">6851</int>
  42. <long name="start_time">1375142158</long>
  43.             <long name="end_time">1375146391</long>
  44.             <int name="prov_id">1</int>
  45.             <int name="city_id">103</int>
  46.             <int name="area_id">10304</int>
  47. <int name="idt_id">11002</int>
  48. <int name="cnt">23</int>
  49. <int name="net_type">1</int>
  50. </doc>
  51.         <doc>
  52.             <int name="log_id">6851</int>
  53. <long name="start_time">1375142158</long>
  54.             <long name="end_time">1375146391</long>
  55. <int name="prov_id">1</int>
  56. <int name="city_id">103</int>
  57. <int name="area_id">10304</int>
  58. <int name="idt_id">10200</int>
  59. <int name="cnt">55</int>
  60.             <int name="net_type">1<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值