2016-10-20 3 views
0

1日にいくつかのイベントの累積合計をプロットしたいと思います。 cumulative sum aggregationは、私がドキュメントで与えられた例を再利用しようとしているように思われる。cumulative_sumを以前の集計で使用する方法は?

最初の集約は

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

は、そのような私は、

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

を経由して上記doc_countの累積和を照会したい

 (...) 
     { 
      "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 
     }, 
     (...) 

などの返信を与え、次のクエリを正常に動作しますそれはエラーを与える:

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

bucket_pathは合計する要素を指し、累積集計の例は特定の中間合計を作成しましたが、合計する項目はありません(doc_countの横)。私は解決策を見つけた

{ 
    "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

私が推測するには、このようなあなたのクエリを変更する必要があります。 doc_countは利用できないようですが、私はstatsを時間パラメータとして取得し、そのcountの値を使用しようとしました。それは働いた:

{ 
    "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

ありがとう、どちらも動作しません。最初のもの(2番目の 'aggs'は' date_histogram'と同じレベルにあります)は ''パス[doc_count]に対して集計が見つかりませんでした」を返し、2番目の '累計集計[vulns_cumulated]はヒストグラムまたは日付ヒストグラムを親として持たなければなりません' – WoJ

+0

私のクエリを更新します。私はそれが動作することは知りませんが、私は与えられた情報に従って作成しようとします。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-cumulative-sum-aggregation.html#search-aggregations-pipeline-cumulative-sum-aggregation thisをチェックすることもできますページ。私は、あなたはdoc_countの値を取得するためにvalue_count集計を使用することができますと思います。しかし私は私のローカルマシン上の例ではありませんでした。私は調べようとするだけです。 – hkulekci

関連する問題