Вам нужно использовать кардинальное суммирование для подсчета уникальных предметов и минимальное агрегирование, чтобы получить минимальную дату
Запрос:
{
"size": 0,
"aggs": {
"result": {
"date_range": {
"field": "timestamp",
"format": "yyyy-MM-dd",
"ranges": [
{
"from": "2020-01-01",
"to": "2020-03-31"
}
]
},
"aggs": {
"histogram": {
"date_histogram": {
"field": "date",
"interval": "1M",
"extended_bounds": {
"min": "2020-01-01",
"max": "2020-03-31"
},
"format": "yyyy-MM-dd"
},
"aggs": {
"user_sigups": {
"terms": {
"field": "user_id.keyword"
},
"aggs": {
"unique_count": {
"cardinality": {
"field": "user_id.keyword"
}
},
"min_date":{
"min": {
"field": "timestamp"
}
}
}
}
}
}
}
}
}
}
Результат:
"aggregations" : {
"result" : {
"buckets" : [
{
"key" : "2020-01-01-2020-03-31",
"from" : 1.5778368E12,
"from_as_string" : "2020-01-01",
"to" : 1.5856128E12,
"to_as_string" : "2020-03-31",
"doc_count" : 9,
"histogram" : {
"buckets" : [
{
"key_as_string" : "2020-01-01",
"key" : 1577836800000,
"doc_count" : 1,
"user_sigups" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "user_id_1",
"doc_count" : 1,
"min_date" : {
"value" : 1.5781824E12,
"value_as_string" : "2020-01-05"
},
"unique_count" : {
"value" : 1
}
}
]
}
},
{
"key_as_string" : "2020-02-01",
"key" : 1580515200000,
"doc_count" : 4,
"user_sigups" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "user_id_1",
"doc_count" : 2,
"min_date" : {
"value" : 1.5809472E12,
"value_as_string" : "2020-02-06"
},
"unique_count" : {
"value" : 1
}
},
{
"key" : "user_id_2",
"doc_count" : 2,
"min_date" : {
"value" : 1.580688E12,
"value_as_string" : "2020-02-03"
},
"unique_count" : {
"value" : 1
}
}
]
}
},
{
"key_as_string" : "2020-03-01",
"key" : 1583020800000,
"doc_count" : 4,
"user_sigups" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "user_id_3",
"doc_count" : 2,
"min_date" : {
"value" : 1.5831936E12,
"value_as_string" : "2020-03-03"
},
"unique_count" : {
"value" : 1
}
},
{
"key" : "user_id_1",
"doc_count" : 1,
"min_date" : {
"value" : 1.5842304E12,
"value_as_string" : "2020-03-15"
},
"unique_count" : {
"value" : 1
}
},
{
"key" : "user_id_2",
"doc_count" : 1,
"min_date" : {
"value" : 1.5847488E12,
"value_as_string" : "2020-03-21"
},
"unique_count" : {
"value" : 1
}
}
]
}
}
]
}
}
]
}
Позвольте мне знаю, как это работает для вас