elasticsearch聚合按聚合比例排序

时间:2014-07-08 05:35:14

标签: elasticsearch aggregation

我在分析中有一个场景,我想在1000多个网点中计算表现最差的20个网点,其中performance = transactionCount/ VisitCount每个月都在一个网点。

映射是,

{
 "CustomerVisit": {
   "properties": {
     "outlet": {
       "type": "string",
       "index": "not_analyzed"
     },
     "customerName": {
       "type": "string",
       "index": "not_analyzed"
     },
     "visitMonth": {
       "type": "Date"
     },
    "visit": {
       "type": "nested",
       "properties": {
         "visitStatus": {
           "type": "long"
         },
         "transactionStatus": {
           "type": "long"
         },
         "remarks": {
           "type": "string",
           "index": "not_analyzed"
         }
       }
     }
   }
 }
}

现在,我想要的是以这样一种方式聚合,即按照 visitStatus 的聚合与 transactionStatus 的聚合的比例,按照1000+的比例排列我20个。< / p>

我找不到使用aggs解决问题的方法,我不知道脚本是否可以在这里实现。我即将实施的粗略解决方案是

  1. 通过最少的transactionCount聚合,获得20个桶(带插座 名称/计数)[执行一个查询]
  2. 通过visitCount汇总以上20个网点[另一个查询]

  3. 将count1除以count2以获得比率

  4. 但这永远不会给我正确的结果,因为我按最少的交易排序而不是交易/访问的比例。

0 个答案:

没有答案