terms分桶后的结果, 还需要根据每桶的doc_count再次分桶,该如何写后续的逻辑?
Elasticsearch | 作者 felixzxk | 发布于2019年11月09日 | 阅读数:2942
es版本是7.4.1
运行环境是centos7, docker
业务需求如下:
数据源是销售人员的拜访记录, 该记录的doc中包含createTime(拜访时间)和salesmanAutoId(业务员唯一标识);
需要按天分桶, 查出近两天的拜访总数;
然后按salesmanAutoId分桶, 主要是看销售人员的拜访次数;
再根据每个业务员拜访次数的区间分桶, 查看宏观拜访数据: 例如每天2访, 3访, 3访以上的各有多少人
最后这一步我无法实现, 或者是不是我不该按salesmanAutoId分桶?
请大神指点迷津, 万分感谢
以下是DSL
运行环境是centos7, docker
业务需求如下:
数据源是销售人员的拜访记录, 该记录的doc中包含createTime(拜访时间)和salesmanAutoId(业务员唯一标识);
需要按天分桶, 查出近两天的拜访总数;
然后按salesmanAutoId分桶, 主要是看销售人员的拜访次数;
再根据每个业务员拜访次数的区间分桶, 查看宏观拜访数据: 例如每天2访, 3访, 3访以上的各有多少人
最后这一步我无法实现, 或者是不是我不该按salesmanAutoId分桶?
请大神指点迷津, 万分感谢
以下是DSL
GET visited/_search
{
"size": 0,
"query": {
"bool": {
"must": [
{
"range": {
"createTime": {
"gte": "now-1d/d",
"lte": "now/d"
}
}
}
]
}
},
"aggs": {
"visit_per_day": {
"date_histogram": {
"field": "createTime",
"calendar_interval": "day"
},
"aggs": {
"times_per_user": {
"terms": {
"field": "salesmanAutoId"
}
}
}
}
}
}
以下是结果数据:{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 15,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"visit_per_day" : {
"buckets" : [
{
"key_as_string" : "2019-11-07T00:00:00.000Z",
"key" : 1573084800000,
"doc_count" : 6,
"times_per_user" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 620,
"doc_count" : 3
},
{
"key" : 17006,
"doc_count" : 2
},
{
"key" : 17323,
"doc_count" : 1
}
]
}
},
{
"key_as_string" : "2019-11-08T00:00:00.000Z",
"key" : 1573171200000,
"doc_count" : 9,
"times_per_user" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 620,
"doc_count" : 4
},
{
"key" : 17006,
"doc_count" : 3
},
{
"key" : 17323,
"doc_count" : 2
}
]
}
}
]
}
}
}
2 个回复
trycatchfinal
赞同来自:
fantuan
赞同来自:
https://www.elastic.co/guide/e ... .html