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

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

更多干货

  • 分布式实战(干货)
  • spring cloud 实战(干货)
  • mybatis 实战(干货)
  • spring boot 实战(干货)
  • React 入门实战(干货)
  • 构建中小型互联网企业架构(干货)
  • python 学习持续更新
  • ElasticSearch 笔记

一、概述

  • 聚合分析的内部原理是什么?
  • 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. 倒排索引+正排索引来实现

实现搜索出苹果

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

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

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

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


相关文章

  • ElasticSearch 笔记

  • 1_ElasticSearch使用term filter来搜索数据

  • 2_ElasticSearch filter执行原理 bitset机制与caching机制

  • 3_ElasticSearch 基于bool组合多个filter条件来搜索数据

  • 4_ElasticSearch 使用terms搜索多个值

  • 5_ElasticSearch 基于range filter来进行范围过滤

  • 6_ElasticSearch 控制全文检索结果的精准度

  • 7_ElasticSearch term+bool实现的multiword搜索原理

  • 8_基于boost的搜索条件权重控制

  • 9_ElasticSearch 多shard场景下relevance score不准确

  • 10_ElasticSearch dis_max实现best fields策略进行多字段搜索

  • 11_ElasticSearch 基于tie_breaker参数优化dis_max搜索效果

  • 12_ElasticSearch multi_match语法实现dis_max+tie_breaker

  • 13_ElasticSearch multi_match+most fiels策略进行multi-field搜索

  • 14_ElasticSearch 使用most_fields策略进行cross-fields search

  • 15_ElasticSearch copy_to定制组合field进行cross-fields搜索

  • 16_ElasticSearch 使用原生cross-fiels 查询

  • 17_ElasticSearch phrase matching搜索

  • 18_ElasticSearch 基于slop参数实现近似匹配

  • 19_ElasticSearch 使用match和近似匹配实现召回率与精准度的平衡

  • 20_ElasticSearch rescoring机制优化近似匹配搜索的性能

  • 21_ElasticSearch 前缀搜索、通配符搜索、正则搜索

  • 22_ElasticSearch 搜索推荐match_phrase_prefix实现search-time

  • 23_ElsaticSearch 搜索推荐ngram分词机制实现index-time更多干货

  • 24_ElasticSearch TF&IDF算法以及向量空间模型

  • 25_ElasticSearch 揭秘lucene的相关度分数算法

  • 26_ElasticSearch 四种常见的相关度分数优化方法

  • 27_ElasticSearch用function_score自定义相关度分数算法

  • 28_ElasticSearch误拼写时的fuzzy模糊搜索技术

  • 29_ElasticSearchIK中文分词器的安装和使用

  • 30_ElasticSearch IK分词器配置文件 以及自定义词库

  • ElasticSearchIK中文分词器的安装和使用

  • 日志管理ELK


你可能感兴趣的:(【构建高可用架构】,【ElatisSearch】,【大数据】)