【问题标题】:How to use composite aggregation with a single bucket如何将复合聚合与单个存储桶一起使用
【发布时间】:2020-06-08 05:32:36
【问题描述】:

以下复合聚合查询

{
  "query": {
    "range": {
      "orderedAt": {
        "gte": 1591315200000,
        "lte": 1591438881000
      }
    }
  },
  "size": 0,
  "aggs": {
    "my_buckets": {
      "composite": {
        "sources": [
          {
            "aggregation_target": {
              "terms": {
                "field": "supplierId"
              }
            }
          }
        ]
      },
      "aggs": {
        "aggregated_hits": {
          "top_hits": {}
        },
        "filter": {
          "bucket_selector": {
            "buckets_path": {
              "doc_count": "_count"
            },
            "script": "params.doc_count > 2"
          }
        }
      }
    }
  }
}

返回类似下面的内容。

{
  "took" : 67,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 34,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "my_buckets" : {
      "after_key" : {
        "aggregation_target" : "0HQI2G2HG00100G8"
      },
      "buckets" : [
        {
          "key" : {
            "aggregation_target" : "0HQI2G0K000100G8"
          },
          "doc_count" : 4,
          "aggregated_hits" : {...}
        },
        {
          "key" : {
            "aggregation_target" : "0HQI2G18G00100G8"
          },
          "doc_count" : 11,
          "aggregated_hits" : {...}
        },
        {
          "key" : {
            "aggregation_target" : "0HQI2G2HG00100G8"
          },
          "doc_count" : 16,
          "aggregated_hits" : {...}
        }
      ]
    }
  }
}

根据查询中设置的条件将聚合结果放入存储桶中。

有没有办法将它们放在一个桶中并对整个结果进行分页(即本例中的 31 个文档)?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我不认为你可以。除非您执行 cardinality、scripted_metric 或 terms 聚合,否则文档的上下文不包含有关其他文档的信息。此外,一旦您根据 supplierId 存储您的文档,它首先会破坏聚合的目的......

    您在上面写的内容尽善尽美,您必须在一些后期处理步骤中结合aggregated_hits。

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 2018-08-16
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多