Поскольку вы все еще хотите, чтобы гистограмма была отфильтрована по диапазону, я бы рекомендовал оставить запрос таким, какой он есть. Поскольку вы не хотите, чтобы документы, соответствующие запросу, были возвращены, и все, что вам нужно, это результат агрегирования, все, что вам нужно сделать, это установить "size": 0
, как показано ниже:
await client.search({
index: "console-*",
body: {
sort: {
"@timestamp": {
order: "desc"
}
},
query: {
range: {
"@timestamp": {
gte: Date.now() - 15 * 60 * 1000,
format: "epoch_millis"
}
}
},
aggs: {
series: {
date_histogram:{
field: "@timestamp",
interval: "30s",
time_zone: "Asia/Shanghai",
min_doc_count: 1
}
}
}
},
size: 0
});
ОБНОВЛЕНИЕ: использование агрегирования фильтров
{
"aggs": {
"filterdSeries": {
"filter": {
"range": {
"@timestamp": {
"gte": "now-15m",
"format": "epoch_millis"
}
},
"aggs": {
"series": {
"date_histogram": {
"field": "@timestamp",
"interval": "30s",
"time_zone": "Asia/Shanghai",
"min_doc_count": 1
}
}
}
}
}
},
"size": 0
}