51_ElasticSearch 基于doc value正排索引的聚合内部原理

51_ElasticSearch 基于doc value正排索引的聚合内部原理

更多干货

一、概述

  • 聚合分析的内部原理是什么?
  • aggs,term,metric avg max,执行一个聚合操作的时候,内部原理是怎样的呢?
  • 用了什么样的数据结构去执行聚合?
  • 是不是用的倒排索引?

二、例子

搜索+聚合,写个示例。搜索 品牌为苹果手机,按照颜色聚合。(苹果手机,每种颜色的台数)

GET /test_index/test_type/_search 
{
	"query": {
		"match": {
			"search_field": "苹果"
		}
	},
	"aggs": {
		"group_by_agg_field": {
			"terms": {
				"field": "agg_field"
			}
		}
	}
}

1. 采用倒排索引来进行聚合操作

纯用倒排索引来实现的弊端,性能是很低下

  • es不是纯用倒排索引来实现搜索 + 聚合。
  • 性能是很低下的原因在与聚合,聚合的时候需要遍历下面例子中所有的颜色
  • 需要遍历所有的倒排索引才能实现聚合

1、实现搜索出苹果。在品牌的倒排索引中搜索。找到是苹果的倒排索引就停止。搜索不需要遍历整个倒排索引效率高

苹果   -    第一台 第二台
小米   -    第三台 第四台

2、 进行聚合

颜色的倒排索引中搜索。要获得所有颜色的话,就需要遍历所有的倒排索引

	 红色 - 第一台 
	 蓝色 - 第二台 
	 红色 - 第三台 
	 蓝色 - 第四台 

2. 倒排索引+正排索引来实现

实现搜索出苹果

苹果   -    第一台 第二台
小米   -    第三台 第四台

进行聚合,只要根据搜索结果依次在正排索引中搜索。并做聚合操作

第一台 	-  红色 
第二台 	-  蓝色 
第三台 	-  红色 
第四台 	-  蓝色 

苹果 --> 第一台,第二台 -> 红色、蓝色


相关文章


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值