ES Java High Level REST Client 聚合返回值解析总结
在使用ES Java Rest High Client的时候,因为初学ES,所以对解析返回值一脸懵逼。
现针对返回值解析写下此文。
原始Rest请求
GET log/orderLog/_search?size=0
{
"query":{
"bool": {
"must": [
{
"match_phrase": {
"operator": "15061106601"
}},
{
"range": {
"time": {
"gte": 1536019200000,
"lte": 1536205600000
}
}}
]
}
},
"aggs":{
"day_order":{
"date_histogram": {
"field": "time",
"interval": "day"
}
, "aggs": {
"grap_order_success": {
"filter": {
"terms": {
"operating": [
"抢",
"单",
"成",
"功"
]
}
},
"aggs": {
"order_success_count": {
"value_count": {
"field": "time"
}
}
}
},
"order_ok":{
"filter": {
"terms": {
"operating": [
"确",
"认",
"方",
"案"
]
}
},
"aggs": {
"order_ok_count": {
"value_count": {
"field": "time"
}
}
}
},
"percent_customizer":{
"bucket_script": {
"buckets_path": {
"orderGrap":"grap_order_success>order_success_count",
"orderOk":"order_ok>order_ok_count"
},
"script": "params.orderOk/params.orderGrap*100"
}
}
}
}
}
}
此请求的内容为:计算一段时间内,某一操作人确认方案和抢单成功的比,我们称之为确认方案率。计算方式为:
每日某人的抢单数量/每日某人的确认方案数量。
- 先使用起止时间和操作人进行筛选;
- 主要使用的Date Histogram Aggregation,对日期以天为间隔分桶;
- 对每天的数据,进行以下过滤:
- 选出每天进行操作为“抢单成功”的文档(等一下说以下Term),使用fliter的terms,并统计数量,使用value count。
- 选出每天进行操作为“确认方案”的文档&#x