Агрегация 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
                }
              }
            }
        }
    }
}

Надеюсь, что это работает для вас.

Другие вопросы по тегам