Elasticsearch 聚合限制

Elasticsearch aggregation limitation

当我创建聚合查询时,它适用于什么范围:索引中的所有条目还是仅前 10000 个? 例如,这是我针对脚本指标聚合获得的响应:

{
    "took": 76,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 10000,
            "relation": "gte"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "number_of_operations_in_progress": {
            "value": 2
        }
    }
}

hits->total->value 是 10000 这让我认为聚合函数仅应用于前 10000 个条目,而不是索引中的整个数据集。

我的理解对吗?如果是,有没有办法对所有条目应用聚合函数?

聚合始终应用于查询选择的整个文档集。

hits.total.value 仅提示有多少文档与查询匹配,在本例中超过 10K 文档与查询匹配。

您可以使用 track_total_hits 来控制应如何跟踪点击总数

POST index1/_search
{
  "track_total_hits": true,
  "query": {
    "match_all": {}
  },
  "aggs": {
    "groupbyk1": {
      "terms": {
        "field": "k1"
      }
    }
  }
}