Я использую «Composite Aggregation», так как в моем случае требуется «Pagination» для сегментов, возвращаемых Aggregation, так как количество возвращаемых сегментов может быть огромным.
Мне также нужно запустить «Составное агрегирование» в заданном c диапазоне времени, для этого я использую фильтр «диапазона». Тем не менее, ответ отasticsearch не содержит никаких данных в «агрегации». Массив "hit" содержит правильные данные в соответствии с фильтром. Меня интересует только результат «Составной агрегации».
Я что-то упустил?
Запрос как ниже:
GET <my-index>/_search
{
"query" : {
"range" : {
"@timestamp" : {
"gte" : "2020-03-29T14:53:42.068Z",
"lt" : "2020-03-29T15:53:42.068Z"
}
}
},
"aggs" : {
"uniq_userids": {
"composite" : {
"size": 100,
"sources" : [
{ "by_userid": { "terms" : { "field": "userid.keyword" } } }
]
}
}
}
}
Ответ следующий:
{
"took" : 10,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 12,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
...
]
},
"aggregations" : {
"uniq_userids" : {
"buckets" : [ ]
}
}
}
Ожидаемый результат в элементе агрегации
"aggregations" : {
"uniq_userids" : {
"after_key" : {
"by_userid" : "user4"
},
"buckets" : [
{
"key" : {
"by_userid" : "user1"
},
"doc_count" : 3
},
{
"key" : {
"by_userid" : "user2"
},
"doc_count" : 3
},
{
"key" : {
"by_userid" : "user3"
},
"doc_count" : 2
}
]
}
}
Пример документа
{
"_index": "xxxxxxxxxxx",
"_type": "doc",
"_id": "fpFcKXEB9-HOO02nOoEG",
"_score": 1,
"_source": {
"message": "xxxxxxxxxxx",
"input": {
"type": "log"
},
"tags": [
"beats_input_codec_plain_applied"
],
"offset": 56422597,
"logday": "2020-03-29",
"userid": "user1",
"source": "xxxxxxxxxxx",
"@version": "1",
"prospector": {
"type": "log"
},
"Micro_time": "2020-03-29 14:54:01.366719",
"logtime": "14:54:01.366719",
"@timestamp": "2020-03-29T14:54:01.366Z"
}
}