Когда я запускаю:
query: {
bool: {
filter: [
{ term: { "data.ID": "12345" } },
{ range: { "@timestamp": {"gte": "now-3M"} } },
],
},
}
Я получаю такой результат (для простоты я удалил дополнительные данные):
[
{
Data: {
ID: "12345",
type: "invoice"
},
Meta: {
DateTime: "2020-01-07T21:00:24.738"
}
},
{
Data: {
ID: "12345",
type: "invoice"
},
Meta: {
DateTime: "2020-01-07T21:00:25.245"
}
},
{
Data: {
ID: "12345",
type: "self"
},
Meta: {
DateTime: "2020-01-07T21:00:25.245"
}
}
]
Я хочу иметь возможность агрегировать результаты счета если они находятся в пределах 3 секунд друг от друга.
Моя попытка выглядит следующим образом:
query: {
bool: {
filter: [
{ term: { "data.ID": "12345" } },
{ range: { "@timestamp": {"gte": "now-3M"} } },
aggs: {
my_agg: {
"date_histogram": {
"field": "@timestamp",
"interval": "3s"
},
{ term: { "data.type": "invoice" } }
}
},
],
},
}
Я ожидаю, что он вернет что-то вроде этого:
[
[
{
Data: {
ID: "12345",
type: "invoice"
},
Meta: {
DateTime: "2020-01-07T21:00:24.738"
}
},
{
Data: {
ID: "12345",
type: "invoice"
},
Meta: {
DateTime: "2020-01-07T21:00:25.245"
}
}
],
{
Data: {
ID: "12345",
type: "self"
},
Meta: {
DateTime: "2020-01-07T21:00:25.245"
}
}
]
Но это возвращает [parsing_exception] [bool] query does not support [aggs]
Я пробовал много разных запросов, и до сих пор застрял, получая разные ошибки. Кто-нибудь знает как это сделать?