提到倒排索引,我们一般第一印象主要是lucene或者是solr或者是Elasticsearch。在Doris中,从2.0版本开始也提供有倒排索引,所以如果我们对数据模糊查询的场景要求不太高的话,我们也可以使用Doris来完成这项功能。
1)倒排索引在Doris中的实现
在Doris的倒排索引实现中,table的一行对应一个文档、一列对应文档中的一个字段,因此利用倒排索引可以根据关键词快速定位包含它的行,达到WHERE子句加速的目的。
与Doris中其他索引不同的是,在存储层倒排索引使用独立的文件,跟segment文件有逻辑对应关系、但存储的文件相互独立。这样的好处是可以做到创建、删除索引不用重写tablet和segment文件,大幅降低处理开销。
2)Doris倒排索引的功能介绍
1)增加了字符串类型的全文检索
支持字符串全文检索,包括同时匹配多个关键字MATCH_ALL、匹配任意一个关键字MATCH_ANY、匹配短语词组MATCH_PHRASE 支持字符串数组类型的全文检索 支持英文、中文以及Unicode多语言分词
2)加速普通等值、范围查询,覆盖bitmap索引的功能,未来会代替bitmap索引
支持字符串、数值、日期时间类型的 =, !=, >, >=, <, <= 快速过滤 支持字符串、数字、日期时间数组类型的 =, !=, >, >=, <, <=
3)支持完善的逻辑组合
新增索引对OR NOT逻辑的下推 支持多个条件的任意AND OR NOT组合
4)灵活、快速的索引管理
支持在创建表上定义倒排索引 支持在已有的表上增加倒排索引,而且支持增量构建倒排索引,无需重写表中的已有数据 支持删除已有表上的倒排索引,无需重写表中的已有数据
3)倒排索引在不同数据模型中的限制
Aggregate 模型:只能为 Key 列建立倒排索引。 Unique 模型:需要开启 merge on write 特性,开启后,可以为任意列建立倒排索引。 Duplicate 模型:可以为任意列建立倒排索引。
本文主要是介绍一些基础的概念,在后续的文章里面我们会演示如何使用doris中的倒排索引。
还没有评论,来说两句吧...