Elasticsearch聚合与查询:Pipeline聚合和Percolator的深入解析
1. Pipeline聚合
Pipeline聚合是一种特殊的聚合类型,与之前学习的指标聚合和桶聚合有所不同。指标聚合返回指标,桶聚合返回桶,它们都基于返回的文档进行操作。而Pipeline聚合则是对其他聚合的输出及其指标进行操作,例如可以进行移动平均计算。
需要注意的是,Pipeline聚合是在Elasticsearch 2.0中引入的,目前仍处于实验阶段,这意味着其API未来可能会发生变化,从而破坏向后兼容性。
1.1 可用类型
Pipeline聚合主要有两种类型:
-父聚合家族:对其他聚合的输出进行操作,能够生成新的桶或新的聚合添加到现有桶中。
-兄弟聚合:可以在同一级别生成新的聚合。
1.2 引用其他聚合
Pipeline聚合需要访问其他聚合的结果,这可以通过buckets_path属性来实现。该属性使用特定格式定义,我们可以使用一些关键字来精确指定感兴趣的聚合和指标。>用于分隔聚合,.用于分隔聚合及其指标。例如,my_sum.sum表示获取名为my_sum的聚合的sum指标;popular_tags>my_sum.sum表示获取嵌套在popular_t