2017-09-05 57 views
0

我正在使用彈性搜索5.5.1。 我的要求是應用下面的公式:(doc_count * 100/10)上設置如下的數據:如何在彈性搜索聚合桶數據上應用數學運算

{ 
    "took": 30, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 13, 
    "max_score": 0, 
    "hits": [] 
    }, 
    "aggregations": { 
    "group_by_botId": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
     { 
      "key": 1, 
      "doc_count": 9 
     }, 
     { 
      "key": 3, 
      "doc_count": 4 
     } 
     ] 
    } 
    } 
} 

我應該能夠找到每個桶項溶液中。我不想爲此問題使用Java SDK,因爲要求僅使用彈性搜索REST API。

回答

2

可以使用bucket_script聚集,以運行每個桶的腳本:

"aggs": { 
    "group_by_botId": { 
     "terms": { 
     "field": "botId" 
     }, 
     "aggs": { 
     "count": { 
      "bucket_script": { 
      "buckets_path": { 
       "doc_count" : "_count" 
      }, 
      "script": "params.doc_count * 100/10" 
      } 
     } 
     } 
    } 
    }