面试题答案
一键面试{
"aggs": {
"filtered_actions": {
"filter": {
"bool": {
"must": [
{
"range": {
"操作时间": {
"gte": "now-1w"
}
}
},
{
"prefix": {
"用户ID": "user_"
}
},
{
"term": {
"操作模块": "订单模块"
}
}
]
}
},
"aggs": {
"action_type_buckets": {
"terms": {
"field": "操作类型"
}
}
}
}
},
"query": {
"bool": {
"filter": [
{
"range": {
"操作时间": {
"gte": "now-1w"
}
}
},
{
"prefix": {
"用户ID": "user_"
}
},
{
"term": {
"操作模块": "订单模块"
}
}
]
}
}
}
解释
- 外层
aggs
:定义聚合操作。filtered_actions
:自定义的聚合名称,用于过滤符合条件的文档。filter
:定义过滤条件。bool
:布尔过滤器,组合多个条件。must
:所有条件必须满足。range
:筛选过去一周内的操作,gte
表示大于等于,now-1w
代表当前时间往前一周。prefix
:筛选用户ID以user_
开头的文档。term
:筛选操作模块为订单模块的文档。
aggs
:在过滤后的文档上进一步聚合。action_type_buckets
:自定义名称,按操作类型进行细分统计。terms
:按操作类型
字段进行分组统计。
query
:定义查询条件,与聚合中的过滤条件一致,确保只返回符合条件的文档,提升聚合效率。同样使用bool
过滤器组合条件,包括时间范围、用户ID前缀和操作模块的过滤。