elasticsearch倒排索引理解

您所在的位置:网站首页 关于倒排索引的理解 elasticsearch倒排索引理解

elasticsearch倒排索引理解

2022-05-23 11:34| 来源: 网络整理| 查看: 265

首先了解一下什么正排索引:

正排索引

1、拿Mysql Innodb的聚簇索引来说,每个索引其实都是一颗 B+ 树,主键索引称作聚簇索引,其他非主键索引称作二级索引,每个表中每一行的记录值都完整的保存在主键索引的叶子节点上,二级索引的叶子节点保存的是主键的值。

2、非聚簇索引只是叶子节点的内容存放的是该表的主键信息,查询的顺序则是 先通过非聚簇索引的字段找到叶子节点中一致的 单个或者多个主键id,再使用这些主键id进行回表,最终获得对应的完整实体数据。详细可看mysql B+树(btree)索引原理。

倒排索引

创建倒排索引的field,会通过IKAnalyzer(比较流行的中文分词器)根据语义将字段中的field分成一个一个对应的词索引(term index),构成该类型数据的全部词索引集合(term dictionary),如“ "text": "喜欢篮球、英雄联盟" ”会被分成 (喜欢、篮球、英雄、联盟)4个term index;第二列是含有这些term index对应的文档Id(documentId),这个数据可以帮助我们最终溯源到完整实体数据;第三列则是对应term index在该文档字段中的位置,0表示在开头的位置,这个可以帮助标注检索出来数据的高亮信息。

term dictionary documentId position 喜欢 1,5,10 0,2,5 篮球 1,2,33 1,5,6 ... ... .. 分词

如何输入一个文档数据后创建对应的倒排索引,如 {“id”:1,“name”:“小明”,“hobby”:“喜欢篮球、英雄联盟”}

插入文档时,将text类型的字段做分词然后插入倒排索引,此时就可能用到analyzer指定的分词器, 这里我们对hobby这个字段分词(喜欢、篮球、英雄、联盟)会被分成多个对应的词索引(term index),每个term index对应的位置、文档id也都会生成,添加到上述的数据结构索引库中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3