推荐答案
在 Elasticsearch 中,直方图聚合(Histogram Aggregation)用于将数值字段的值按照指定的间隔进行分组,生成直方图。以下是一个简单的示例:
-- -------------------- ---- ------- - ------- -- ------- - ------------------ - ------------ - -------- -------- ----------- -- - - - -
在这个示例中,price
字段的值将按照 50 的间隔进行分组,生成一个直方图。
本题详细解读
直方图聚合的基本概念
直方图聚合是一种基于数值字段的聚合方式,它将数值字段的值按照指定的间隔(interval)进行分组。每个分组称为一个“桶”(bucket),每个桶包含一定范围内的数值。
直方图聚合的参数
field
:指定要进行聚合的数值字段。interval
:指定分组的间隔。例如,interval
为 50 时,数值将被分组为 0-50、50-100、100-150 等。min_doc_count
:可选参数,指定每个桶中至少包含的文档数量。如果某个桶中的文档数量少于该值,则该桶将被忽略。extended_bounds
:可选参数,指定直方图的范围。即使没有数据,也会生成指定范围内的桶。
示例解析
-- -------------------- ---- ------- - ------- -- ------- - ------------------ - ------------ - -------- -------- ----------- -- - - - -
size: 0
:表示不返回具体的文档,只返回聚合结果。aggs
:定义聚合操作。price_histogram
:聚合的名称,可以自定义。histogram
:指定使用直方图聚合。field: "price"
:指定对price
字段进行聚合。interval: 50
:指定分组的间隔为 50。
返回结果
执行上述查询后,Elasticsearch 将返回类似如下的结果:
-- -------------------- ---- ------- - --------------- - ------------------ - ---------- - - ------ -- ------------ -- -- - ------ --- ------------ -- -- - ------ ---- ------------ -- - - - - -
buckets
:包含所有分组的桶。key
:表示每个桶的起始值。doc_count
:表示该桶中包含的文档数量。
通过直方图聚合,可以方便地对数值字段进行分组统计,生成直方图数据。