2016-10-20 1 views
0

Ich möchte eine kumulative Summe einiger Ereignisse pro Tag grafisch darstellen. Die cumulative sum aggregation scheint der Weg zu sein, also habe ich versucht, das Beispiel in den Dokumenten zu verwenden.Wie kumulative_sum mit einer vorherigen Aggregation verwenden?

Die erste Aggregation funktioniert gut, die folgende Abfrage

{ 
    "aggs": { 
     "vulns_day" : { 
      "date_histogram" :{ 
       "field": "HOST_START_iso", 
       "interval": "day" 
      } 
     } 
    } 
} 

gibt Antworten wie

 (...) 
     { 
      "key_as_string": "2016-09-08T00:00:00.000Z", 
      "key": 1473292800000, 
      "doc_count": 76330 
     }, 
     { 
      "key_as_string": "2016-09-09T00:00:00.000Z", 
      "key": 1473379200000, 
      "doc_count": 37712 
     }, 
     (...) 

ich dann die kumulative Summe von doc_count oben über

{ 
    "aggs": { 
     "vulns_day" : { 
      "date_histogram" :{ 
       "field": "HOST_START_iso", 
       "interval": "day" 
      } 
     }, 
     "aggs": { 
      "vulns_cumulated": { 
       "cumulative_sum": { 
        "buckets_path": "doc_count" 
       } 
      } 
     } 
    } 
} 

abfragen wollte aber es gibt einen Fehler:

"reason": { 
       "type": "search_parse_exception", 
       "reason": "Could not find aggregator type [vulns_cumulated] in [aggs]", 

Ich sehe, dass bucket_path auf die Elemente zeigen sollte eine spezifische Zwischensumme summiert und das Beispiel für kumulative Aggregationen erstellt werden, aber ich habe nichts zu summieren (neben doc_count).

Antwort

0

ich die Lösung gefunden. Da doc_count nicht verfügbar zu sein scheint, habe ich versucht, stats für den Zeitparameter abzurufen, und seinen Wert count verwenden. Es hat funktioniert:

{ 
    "size": 0, 
    "aggs": { 
     "vulns_day": { 
     "date_histogram": { 
      "field": "HOST_START_iso", 
      "interval": "day" 
     }, 
     "aggs": { 
      "dates_stats": { 
       "stats": { 
        "field": "HOST_START_iso" 
       } 
      }, 
     "vulns_cumulated": { 
      "cumulative_sum": { 
       "buckets_path": "dates_stats.count" 
      } 
     } 
     } 
    } 
    } 
} 
0

ich denke, sollten Sie Ihre Abfrage wie folgt ändern:

{ 
    "aggs": { 
    "vulns_day": { 
     "date_histogram": { 
     "field": "HOST_START_iso", 
     "interval": "day" 
     }, 
     "aggs": { 
     "document_count": { 
      "value_count": { 
      "field": "HOST_START_iso" 
      } 
     }, 
     "vulns_cumulated": { 
      "cumulative_sum": { 
      "buckets_path": "document_count" 
      } 
     } 
     } 
    } 
    } 
} 
+0

Danke, aber keiner funktioniert. Die erste (wo die zweite 'aggs' auf der gleichen Ebene wie 'date_histogram' ist) gibt' No aggregation found for path [doc_count] 'zurück und die zweite' kumulative Summenaggregation [vulns_cumulated] muss ein Histogramm oder ein date_histogram als Parent haben ' – WoJ

+0

Ich aktualisiere meine Anfrage. Ich weiß nicht, dass es funktionieren kann, aber ich versuche, nach gegebenen Informationen zu schaffen. Sie können auch https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-cumulative-sum-aggregation.html#search-aggregations-pipeline-cumulative-sum-aggregation dies überprüfen Seite. Ich denke, Sie können value_count-Aggregation verwenden, um doc_count-Wert zu erhalten. Aber ich konnte kein Beispiel auf meinem lokalen Rechner. Ich versuche nur zu prüfen. – hkulekci

Verwandte Themen