6_索引库底层原理分析

最初刚学习ElasticSearch的时候,为了便于理解,我们将其与我们所学习的MySQL数据进行了类别学习

在这里插入图片描述

但是ElasticSearch相对于MySQL数据库,更好的我们叫它为索引库,它分为两个过程:先是建立索引,再是检索


在这里插入图片描述

ElasticSearch 对于不同的服务建立了不同的索引,每个索引又创建了类型[6以后只能创建一个],同时对类型进行了约束,现在我们往ES中索引文档,它内部是怎样工作的呢?

现在我们添加按照其类型的约束添加“张三”这条数据,ES拿到这条数据后,首先把整个文档进行储存在元数据区,同时会生成对应的"_id",比如这里为0,到时候我们拿0去查询,就可以得到这个文档;然后按照分词器[所谓分词器就是对你输入的数据,按照一定的规则进行划分,这里以标准分词器为例]进行划分,因为name属性是"text"类型,所以需要分词,按照规则,进行单字划分,先分“张”,然后记录这个字在右边哪个文档中出现,同时出现了几次[当然这里只是简单列举一下,实际情况可能更复杂],再分“三”,一样的操作;接下来是"age"属性,因为age是"Integer"类型,所以不需要分词,直接存储,记录。一直如此操作,直到对输入的数据完成…

现在我们要插入第二条数据,同样是现在元数据区进行储存,为其分配"_id",然后是索引区操作,现在"张"这个字不仅在0文档出现,也出现在1文档。

需求: 现在用户想要查找address为"北京"的文档,ES会进行两次搜索,先是在索引区[分词后存放的数据]找到相匹配的文档的"id",再是按照"id"去找到元数据区对应的文档,最后按照:比如在0文档出现的次数多,就把0文档排在前面,展示给用户。

总结: 索引库储存数据,分为索引区和元数据区,元数据区储存完整文档,索引区存放分词过后的数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值