2017-10-11 107 views
1

我试图在elasticsearch中运行此查询。我试图在我的桶上运行一个自定义的scripted_metric聚合。在度量脚本中,我想访问它所聚合的存储桶密钥。ElasticSearch:获取存储桶中的存储桶密钥scripted_metric

我在ES的文档看起来像这样。

{ 
    user_id: 5, 
    data: { 
     5: 200, 
     8: 300 
    } 
}, 
{ 
    user_id: 8, 
    data: { 
     5: 889, 
     8: 22 
    } 
} 

我的聚集查询看起来是这样的:

aggs = { 
    approvers: { 
     terms: { 
      field: 'user_id' 
     }, 
     aggs: { 
      new_metric: { 
       scripted_metric: { 
        map_script: ` 
         // IS IT POSSIBLE TO GET THE BUCKET KEY HERE? 
         // The bucket key here would be the user_id 
         // so i can do stuff like 

         doc['data'][**_term**].... 
        ` 
       } 
      } 
     } 
} 
+0

你有没有解决这个问题:也许这可以让你在解决问题的方向开始了吗? – Miek

回答

0

我不得不做一些挖掘,并可能有你在寻找一个解决方案,如何检索父值同样的困难...我唯一能找到的就是关于子agg的特殊“_count”值,但没有与其父桶名称/键相关。

如果使用具有scripted_metric的子级agg不是一个严格的要求,我可以找到一种方法,允许您至少访问父级内的存储区密钥。

aggs = { 
    approvers: { 
     terms: { 
      field: 'user_id', 
      script: '"There seems to be a magic value here: " + _value' 
     } 
} 

样品改编自this