【问题标题】:ElasticSearch return aggregation AND field valueElasticSearch 返回聚合 AND 字段值
【发布时间】:2018-06-13 15:14:05
【问题描述】:

假设我的 ES 索引中的每个文档都有以下字段:

ASIN, name, referenceNumber, videoViews, timeWatched

可能有许多文档具有相同的 ASIN 字段。

我正在做团队聚合,它基于 ASIN 字段 聚合我的 ES 集群中的文档。 此聚合计算每个 ASIN 存储桶的 videoViewstimeWatched 总和

ElasticSearch 返回聚合响应,其中 ASIN - 每个存储桶的键,timeWatchedvideoViews 的总和是该键的值.

我的简单问题是如何使聚合也返回 namereferenceNumber?如果我知道具有相同 ASIN 的文档将具有相同的 namereferenceNumber

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    Elasticsearch 术语 aggs 的工作方式与 SQL Group by 类似,因此您可以例如执行多个级别的 aggs,例如。 ASIN -> 名称 -> 参考编号。这也将涵盖您具有相同 ASIN 等的不同名称的情况。

    {
        "aggs": {
           "AsinAgg": {
              "terms": {
                  "field": "ASIN", "size":0
              },
              "aggs": {
                  "nameAgg": {
                     "terms": {
                          "field": "name", "size": 0
                      },
                      "aggs" {.....}
                  }
              }
           }
        }
    }
    

    另一种方法是在 agg 中使用 top_hits 并返回前 1 个命中。如果您确定它们具有相同的名称和参考编号,那么您应该可以只获得一次热门。我不建议这样做,即使它可以在特定情况下工作。在此处阅读 top_hits: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2020-02-18
      • 2022-01-14
      • 1970-01-01
      • 2016-11-23
      • 2015-07-30
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多