公司做网站费用会计处理,网站页面分析作业,舟山建设网站,wordpress登录填写1.聚合的种类
聚合常见的有三类#xff1a; **桶#xff08;Bucket#xff09;**聚合#xff1a;用来对文档做分组 TermAggregation#xff1a;按照文档字段值分组#xff0c;例如按照品牌值分组、按照国家分组Date Histogram#xff1a;按照日期阶梯分组#xff0c;例…1.聚合的种类
聚合常见的有三类 **桶Bucket**聚合用来对文档做分组 TermAggregation按照文档字段值分组例如按照品牌值分组、按照国家分组Date Histogram按照日期阶梯分组例如一周为一组或者一月为一组 **度量Metric**聚合用以计算一些值比如最大值、最小值、平均值等 Avg求平均值Max求最大值Min求最小值Stats同时求max、min、avg、sum等 **管道pipeline**聚合其它聚合的结果为基础做聚合 **注意**参加聚合的字段必须是keyword、日期、数值、布尔类型 2.Bucket聚合语法
语法如下
GET /hotel/_search
{size: 0, // 设置size为0结果中不包含文档只包含聚合结果aggs: { // 定义聚合brandAgg: { //给聚合起个名字terms: { // 聚合的类型按照品牌值聚合所以选择termfield: brand, // 参与聚合的字段size: 20 // 希望获取的聚合结果数量}}}
}结果
3.聚合结果排序
默认情况下Bucket聚合会统计Bucket内的文档数量记为_count并且按照_count降序排序。
我们可以指定order属性自定义聚合的排序方式
GET /hotel/_search
{size: 0, aggs: {brandAgg: {terms: {field: brand,order: {_count: asc // 按照_count升序排列},size: 20}}}
}结果
4.限定聚合范围
默认情况下Bucket聚合是对索引库的所有文档做聚合但真实场景下用户会输入搜索条件因此聚合必须是对搜索结果聚合。那么聚合必须添加限定条件。
我们可以限定要聚合的文档范围只要添加query条件即可
GET /hotel/_search
{query: {range: {price: {lte: 200 // 只对200元以下的文档聚合}}}, size: 0, aggs: {brandAgg: {terms: {field: brand,size: 20}}}
}5.Metric聚合语法
我们对酒店按照品牌分组形成了一个个桶。现在我们需要对桶内的酒店做运算获取每个品牌的用户评分的min、max、avg等值。
这就要用到Metric聚合了例如stat聚合就可以获取min、max、avg等结果。
语法如下
GET /hotel/_search
{size: 0, aggs: {brandAgg: { terms: { field: brand, size: 20},aggs: { // 是brands聚合的子聚合也就是分组后对每组分别计算score_stats: { // 聚合名称stats: { // 聚合类型这里stats可以计算min、max、avg等field: score // 聚合字段这里是score}}}}}
}