它不适用于
termsaggs。这是使用无痛脚本的可能方式:
编制索引-您的实际映射可能与生成的默认映射不同(尤其是上的
.keyword部分
rec_id):
POST _bulk{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"100","cost":42}{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"200","cost":67}{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"200","cost":67}{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"200","cost":67}{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"400","cost":11}{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"400","cost":11}{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"500","cost":10}{"index":{"_index":"uniques","_type":"_doc"}}{"record_id":"600","cost":99}
然后汇总
GET uniques/_search{ "size": 0, "aggs": { "terms": { "scripted_metric": { "init_script": "state.id_map = [:]; state.sum = 0.0; state.elem_count = 0.0;", "map_script": """ def id = doc['record_id.keyword'].value; if (!state.id_map.containsKey(id)) { state.id_map[id] = true; state.elem_count++; state.sum += doc['cost'].value; } """, "combine_script": """ def sum = state.sum; def avg = sum / state.elem_count; def stats = [:]; stats.sum = sum; stats.avg = avg; return stats """, "reduce_script": "return states" } } }}
并屈服
..."aggregations" : { "terms" : { "value" : [ { "avg" : 45.8, "sum" : 229.0 } ] } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)