aggregation源码分析

本文深入探讨了Elasticsearch聚合(aggregation)的源码,从搜索阶段的QueryPhase和FetchPhase分析了聚合过程。重点讲解了docvalue在聚合中的作用,以及如何在多段(segment)和多shard环境中维护和合并aggregation结果。
摘要由CSDN通过智能技术生成

概述:

aggregation聚合文档指定字段,在查询的时候知道文档的docId,那么取对应字段值用到了docvalue(知识点1),取到值后保存一个term-function映射map里,比如docCount(知识点二),因为多segment,所以只能每个segment内部维护一个,shard层面根据全局oriId再合并。又因为es多shard,所以再fetchPhase阶段合并多个shard的aggregation,排序agg结果并返回。

源码入口

已知:es search再transport层面的入口类为:TransportSearchAction,默认searchType为QUERY_THEN_FETCH.
可得到:search action为:SearchQueryThenFetchAsyncAction
在这里插入图片描述

search阶段:

QueryPhase.java
在这里插入图片描述
LongTermsAggregator.java
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值