软件版本:
ElasticSearch 和 Kibana版本均为 7.3.2;
背景描述:
有一系列的机票订单数据存储在索引flight中;每一个订单都包含一个提前预订天数order_days,如果order_days>=3则为一个符合政策的订单,否则就是一个不符合政策的订单;每一个订单都从属于一个部门 ticket_dept;
统计要求:
需要统计每个部门的订单符合符合政策数与该部门订单数的百分比,然后按百分比从高到低排列,取top10;
聚合脚本:
问题描述:
1)同样功能如何在kibana的可视化中实现?(我在kibana的可视化中没找到bucket_script的内容)
2)bucket 的排序为什么不能使用 pipeline 聚合结果?要怎样才能正常使用呢?(如示例中使用了 match_percent 进行排序,使用的时候是会报错的:Invalid aggregator order path [match_percent]. The provided aggregation [match_percent] either does not exist, or is a pipeline aggregation and cannot be used to sort the buckets.)
ElasticSearch 和 Kibana版本均为 7.3.2;
背景描述:
有一系列的机票订单数据存储在索引flight中;每一个订单都包含一个提前预订天数order_days,如果order_days>=3则为一个符合政策的订单,否则就是一个不符合政策的订单;每一个订单都从属于一个部门 ticket_dept;
统计要求:
需要统计每个部门的订单符合符合政策数与该部门订单数的百分比,然后按百分比从高到低排列,取top10;
聚合脚本:
GET flights/_search
{
"size": 0,
"aggs": {
"depart_bucket": {
"terms": {
"field": "ticket_dept.keyword",
"size": 10,
"order": {
"match_percent": "desc"
}
},
"aggs": {
"match_policy" : {
"filter": {
"range": {
"order_days": {
"gte": 3
}
}
}
},
"match_percent": {
"bucket_script": {
"buckets_path": {
"totalCount": "_count",
"matchCount": "match_policy._count"
},
"script": "params.matchCount / params.totalCount * 100.0"
}
}
}
}
}
}
问题描述:
1)同样功能如何在kibana的可视化中实现?(我在kibana的可视化中没找到bucket_script的内容)
2)bucket 的排序为什么不能使用 pipeline 聚合结果?要怎样才能正常使用呢?(如示例中使用了 match_percent 进行排序,使用的时候是会报错的:Invalid aggregator order path [match_percent]. The provided aggregation [match_percent] either does not exist, or is a pipeline aggregation and cannot be used to sort the buckets.)
2 个回复
Marine
赞同来自: rudylhm
Marine
赞同来自: