Агрегация ElasticSearch по метке времени
У меня есть следующий документ в ElasticSearch:
"ipAddress": "192.168.10.12", "timestamp": "25 Oct 2015 20:00:00", "switchovers": 2
"ipAddress": "192.168.10.12", "timestamp": "26 Oct 2015 20:00:00", "switchovers": 1
Как я могу написать агрегацию эластичного поиска, чтобы узнать, какие переключения [сегодня] - переключения [вчера] сгруппированы по IP-адресу?
Это где я нахожусь в:
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"switchover_count_over_time": {
"terms": {
"field": "ipAddress"
},
}
}
}'
Еще предстоит выяснить, как извлечь переключения для каждой даты (например, из октябрьского периода) и вычислить разницу от значения переключения предыдущего дня.
Любая помощь?
1 ответ
Вы можете использовать агрегирование гистограммы даты в поле даты / времени. Вот ссылка https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html.Add агрегирование терминов по ipaddress / переключениям внутри агрегации date_histogram.
{
"aggs" : {
"date_interval" : {
"date_histogram" : {
"field" : "date",
"interval" : "month"
}, "aggs": {
"switch_over": {
"terms": {
"field": "ip/switchovers",
"size": 100
}
}
}
}
}
}
Надеюсь, что это работает для вас.