【问题标题】:ElasticSearch .NET Sub AggregationElasticSearch .NET 子聚合
【发布时间】:2017-07-12 16:57:18
【问题描述】:
     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"))))
                )
              );

我正在尝试从 widget_clicked_by_hour 聚合中获取项目,但在嵌套 .net 库中我无权访问项目列表

虽然在调试时我找到了项目列表

【问题讨论】:

    标签: elasticsearch aggregation nest


    【解决方案1】:

    要获取每个日期范围桶的日期直方图桶

    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
        }
    }
    

    由于日期直方图聚合是日期范围聚合的子聚合,因此可以从日期直方图聚合中的每个桶访问。

    【讨论】:

      【解决方案2】:

      我会推荐两件对我有很大帮助的事情。

      1) 我会从 chrome 安装 sense 插件 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

      如果您尝试获取列表,这应该会为您提供项目列表及其计数(您可以使用/忽略)

      【讨论】:

      • Sense 插件虽然仍然有用,但在可用属性和某些查询的结构方面已经过时。我建议使用 Sense/Console 作为与您正在使用的 Elasticsearch 版本兼容的 Kibana 版本的一部分,因为它会根据更改进行更新
      猜你喜欢
      • 2015-03-25
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2023-03-20
      • 2014-11-06
      • 1970-01-01
      相关资源
      最近更新 更多