参考
https://www.elastic.co/guide/cn/elasticsearch/guide/current/_looking_at_time.html
过滤
{
"query":{
"bool":{
"must":[
{
"range":{
"dttime":{ -- 按照dttime字段过滤时间
"gte":"2022-02-01T00:00:00.116+08:00",
"lt":"2022-03-01T00:00:00.116+08:00"
}
}
},
{
"match":{
"user_id":"0001dd" -- 查询userid为0001dd
}
}
]
}
},
size:0 --结果查询数据量
"aggs":{
"day":{
"date_historam":{ --时间解析函数
"field":"dttime", -- 需要聚合的字段
"interval":"month", --聚合的时间间隔也可以是 day year
"format" : "yyyy-MM-dd" -- 时间格式转换
}
}
}
}
es多字段聚合,计算每个用户每天的数据量
{
"query":{
"bool":{
"must":[
{
"range":{
"dttime":{ -- 按照dttime字段过滤时间
"gte":"2022-02-01T00:00:00.116+08:00",
"lt":"2022-03-01T00:00:00.116+08:00"
}
}
},
{
"match":{
"user_id":"0001dd" -- 查询userid为0001dd
}
}
]
}
},
size:0 --结果查询数据量
"aggs":{
"group_by_user":{
"terms":{
"field":"user_id", --第一个分组字段
size:2000,
"order":{
"_count":"desc" --按统计量降序
}
},
"aggs":{ --开始第二个聚合字段
"day":{
"date_historam":{ --时间解析函数
"field":"dttime", -- 需要聚合的字段 --按照时间分组
"interval":"month", --聚合的时间间隔
"format" : "yyyy-MM-dd" -- 时间格式转换
}
}
}
}
}
}
es截取数据字段,并按字段进行分组。
{
"query":{
"bool":{
"must":[
{
"range":{
"dttime":{ -- 按照dttime字段过滤时间
"gte":"2022-02-01T00:00:00.116+08:00",
"lt":"2022-03-01T00:00:00.116+08:00"
}
}
},
{
"match":{
"user_id":"0001dd" -- 查询userid为0001dd
}
}
]
}
},
size:0 --结果查询数据量
"aggs":{
"group_by_user":{
"terms":{
"field":"user_id", --第一个分组字段
size:2000,
"order":{
"_count":"desc" --按统计量降序
}
},
"aggs":{
"tel":{ -- 手机号 截取聚合
"terms":{
"script":{--截取前11位为手机号
"source": "def tel_1=doc['sjhm'].value;def tel_2=tel_1.substring(11); return tel_2"
},
size:1000,
"order":{
"_count":"desc"
}
}
}
}
}
}
}