自学内容网 自学内容网

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(五)-聚合

聚合

聚合基于Query结果的统计,执行过程是搜索的一部分,Onesearch支持0代码构建聚合,聚合目前完全在引擎层

0代码聚合

上图是聚合的配置,包括2个pdm文档聚合统计

  • termsOfExt

term桶聚合,统计ext,如,pdf,doc的数量;子聚合,sum文档的大小

  • rangeOfSize

统计3种大小范围的文件数量

构建聚合

构建agg在引擎层,aggSchema是上面xml对应的类

每类agg对应的mapping,解释agg schema构建Aggregation对象

上图是term 聚合的映射,bucket agg需处理子agg

searchObject.aggregations(aggs) 最后设置到搜索对象

聚合结果

上面搜索结果介绍过,聚合结果也在SearchResponse返回

下图处理agg结果的逻辑 

根据agg schema的agg item的key,获取Aggregate

Agg item负责从Aggregate获取集合统计值,上图是term bucket统计的获取,bucket类型的agg支持子聚合

搜索展示

本节综合展示搜索结果,包括搜索词,filter,nested,聚合,搜索使用场景的pdm-document

Nested搜索

测试代码

最上层api测试,贴近实际使用,不带agg,结果如下图

 带聚合搜索

测试代码,api层

搜索词:"组织架构",filter,带agg,返回如下

搜索部分,em是高亮

聚合部分

至此,本系列文章完毕


原文地址:https://blog.csdn.net/szlhj/article/details/142391680

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!