码迷,mamicode.com
首页 > 其他好文 > 详细

数据分析(analytics)

时间:2014-05-09 12:58:29      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:class   http   c   int   get   数据   

最后,我们要完成最后一个业务需求:允许管理者对员工信息做出数据分析。ES有个功能叫aggregations,这个功能可以对数据进行先进的统计和分析,就像是SQL中的GROUP BY,只不过是功能更强大。

例如:要查出员工中最流行的兴趣名称,

GET /megacorp/employee/_search
{
 
"aggs":{
   
"all_interests":{
     
"terms":{"field":"interests"}
   
}
 
}
}

先忽略语法看结果:

{
   
...
   
"hits":{...},
   
"aggregations":{
     
"all_interests":{
         
"buckets":[
           
{
               
"key":       "music",
               
"doc_count":2
           
},
           
{
               
"key":       "forestry",
               
"doc_count":1
           
},
           
{
               
"key":       "sports",
               
"doc_count":1
           
}
         
]
     
}
   
}
}

结果显示两个员工对music有兴趣,一个对forestry感兴趣,一个对sport感兴趣。这个aggregations并不是预先计算好的,结果是在查找符合条件的文档的时候生成的。如果,还想统计叫Smith的人的兴趣,还可以如下进行组合查询。

GET /megacorp/employee/_search
{
 
"query":{
   
"match":{
     
"last_name":"smith"
   
}
 
},
 
"aggs":{
   
"all_interests":{
     
"terms":{
       
"field":"interests"
     
}
   
}
 
}
}

all_interests节点下就仅仅包含符合查询Smith的条件的员工兴趣信息

  ...
 
"all_interests":{
     
"buckets":[
       
{
           
"key":"music",
           
"doc_count":2
       
},
       
{
           
"key":"sports",
           
"doc_count":1
       
}
     
]
 
}

Aggregations允许嵌套查询。例如,查询对某个爱好感兴趣的员工的平均年龄,

GET /megacorp/employee/_search
{
   
"aggs":{
       
"all_interests":{
           
"terms":{"field":"interests"},
           
"aggs":{
               
"avg_age":{
                   
"avg":{"field":"age"}
               
}
           
}
       
}
   
}
}

结果有点复杂,但还是很容易看懂的,

...
 
"all_interests":{
     
"buckets":[
       
{
           
"key":"music",
           
"doc_count":2,
           
"avg_age":{
             
"value":28.5
           
}
       
},
       
{
           
"key":"forestry",
           
"doc_count":1,
           
"avg_age":{
             
"value":35
           
}
       
},
       
{
           
"key":"sports",
           
"doc_count":1,
           
"avg_age":{
             
"value":25
           
}
       
}
     
]
 
}

输出的结果相对于开始运行的aggregation变得更为丰富。现在不但有了兴趣的列表和他们的数量,并且还对每一个兴趣计算出了对这个兴趣感兴趣的员工的平均年龄。

即使你不了解语法,你也能很容易的看到非常复杂的aggregation和group都能使用这个特色来搞定,查询什么样的数据是没有限制的。

 

原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_analytics.html

数据分析(analytics),布布扣,bubuko.com

数据分析(analytics)

标签:class   http   c   int   get   数据   

原文地址:http://www.cnblogs.com/blog1350995917/p/3718463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!