2017-02-22 6 views
3
デバッグ中ものの、私はアイテムリスト

ElasticSearch .NETサブ集約

enter image description here

へのアクセスを持っていないwidget_clicked_by_hour集約からではなく巣の.NETライブラリ内のアイテムを取得しようとしている

 var response = client.Search<Timeline>(
     x => x.Query(
      q => q.Bool(
       b => b.Must(queryContainer))) 
        .Size(0) 
       .Aggregations(a => a 
       .DateRange("last_24_hours", 
       f => f.Field(n=>n.server_time) 
       .Ranges(z=>z.From(DateMath.Now.Subtract("24h")).To(DateMath.Now)) 
        .Aggregations(
        agg => agg.DateHistogram("widget_clicked_by_hour", 
        p => p.Field(z => z.server_time) 
        .Interval(DateInterval.Hour) 
        .Format("yyyy-MM-dd hh:mm") 
        .OrderDescending("_key")))) 
       ) 
      ); 

私は私が非常に役立った2つのことを示唆している項目のリストに

enter image description here

答えて

2

日付ヒストグラムA以来

var dateRange = response.Aggs.DateRange("last_24_hours"); 

foreach (var rangeBucket in dateRange.Buckets) 
{ 
    var dateHistogram = rangeBucket.DateHistogram("widget_clicked_by_hour"); 

    foreach (var histogramBucket in dateHistogram.Buckets) 
    { 
     // do something with bucket 
    } 
} 

なり、各日付範囲バケットの日付ヒストグラム・バケットを取得するには)無視集計は日付範囲集計のサブ集計であり、日付ヒストグラム集計の各バケットからアクセスできます。

1

を見つけました。

1)私はこれがあなたの右のブラウザでelasticsearchクエリと分析を構築するための非常にユーザーフレンドリーな方法を提供しますクロム https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig?hl=en

からセンスプラグインをインストールします。

2)私はカーディナリティ集約を使用してになります。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html

あなたがリストを取得しようとしている場合、これはあなたのアイテムとそれの数のリストを与えるべきでは(どのことができます使用/

+1

Senseプラグインは、有用ではありますが、利用可能なプロパティと特定のクエリの構造に関して古くなっています。あなたが使用しているElasticsearchバージョンと互換性があるKibanaのバージョンの一部としてSense/Consoleを使用することをお勧めします。これは、変更に合わせて更新されるためです –

関連する問題