00:00
那么再往下走呢,咱们来看一看关于我们这个elect thirty啊,它的一个特点对吧?那么这个特点呢,对吧,那像这块呢,其实大家听一下就可以,对吧?那么第一个天然分片天然集群对吧?这个分片和集群呢,大家应该都不陌生,对吧?那么天然分片天然集群什么意思?就是elect search本身对吧?就是哪怕你只有一个节点,他认为这也是一个集群,只不过集群里边呢,就一个哥们在干活。对吧,这是第一个,那么第二个,那么咱们呢,对我当前节点的数据呢,在进行处理的时候,他呢也会对数据进行分区,对吧,就算你只有一个分区,那么他也认为对吧,那么咱们呢,进行了分片,所以说啊,那么人家这个东西呢,是天生的,就天生人家就有一个分片,那么假如说我说现在我创建了一个副本的话,那你想想其实的一共应该有咱们几份儿数据呀。就假如说我现在它天然分片,这个分片你可以理解成什么呢?理解成分区对吧,那假如说我现在我创建一个我们这副本,那其实呢,在咱们这里边,那应该呢,对吧,有两份数据对吧?和咱们原来呢,这个谁不太一样的卡夫卡不太一样对吧?和咱的卡不太一样,那么大家想一想卡夫卡假如说我现在呢,在咱们这里边想干什么呢?想去创建的分区,那么一般的我在创建咱们这分区的时候,是不是通过什么partitions这个参数来指定一个对吧,Partitions或这个参数呢来指定,那么如果你partitions等于一的话,那么这个时候实际上咱们是不是就一个分区啊,对吧?但如果说我现在呢,在咱们这里边,我呢在里边,我如果说指定一个我的分区的话,那其实呢,有两个数据,有两份数据对吧,或者有两个分区对吧?那么一个呢,就是天然自带的这个,那么另外一个呢,就是他现在加的这个叫天然分片啊天然分片,然后这个集群呢,天然集群就是我现在就算是一个节点,对吧,那么他也认为呢。
01:54
是一个我们这个集群,对吧,那么大家可以简单的去看一看我们当前这张图是吧,简单看一看当时这张图,那么整个呢,这是一个electric search它的一个集群。
02:06
那么这个集群上呢,它有不同的节点对吧?然后接下来那么咱们现在在某一个节点上面呢,对吧?它可以有多个分区对吧?比如说我现在呢,一共有三个分区对吧?那么这分区呢,它分布在不同的节点上,对吧?那么这是P0,这是P1,然后这P2,然后接下来那我除了我的分区之外,也可以像我们这个啊这个卡不卡这样,然后呢,给每一个分区呢,来指定我们这副本啊,来指定我的副本对吧?那么一般呢,咱们这个副本啊,和咱分区它不应该在同一个节点上面啊,副本其实就是一个备份的作用嘛,对吧,其实就备份作用这个呢,是它大概的一个我们这个啊分片对吧?那这个呢是它的一个流程,比如说我现在呢,想从来里边来查询数据,这个数据呢,它用一个完整的一个图片来保证啊来表示对吧,那么我现在在查询这个数据的时候呢,那么这个数据呢,它可能呢,分布在不同的我们这个分区中,对吧?那么这块呢,是一个分区数据,然后接下来这块呢,又是一个分区数据,这个呢又是一个分区数据。
03:06
对吧,那么咱们想要想得到一个完整数据,我是不是得从不同的节点上把这个数据拿到,是不是才能得到它呀,对吧,这个其实我和我们前面讲的对吧,基本是差不多的对吧?这块呢,大家知道一下就行,对吧?然后接下来还有一个什么呢?天然索引,那么这块呢,大家要重点掌握一下啊天索引,那么首先呢,大家想一想索引的概念,你们听没听说过。在我买soq里面应该接触过吧,所以你的作用是干什么?提升咱们查询效率是不是对吧,提升咱们查询效率,买里边怎么创建索引呢。怎么创建索引?是天然索引吗?不是吧,我现在想提升哪一个字段查询效率,咱们是不是应该create index,然后接下来在哪张表的哪个字段来创建咱们的索引啊,对吧?哎,但是呢,Elect search不一样,Elect search呢,天然对所有的数据默认的情况下都是进行索引的,如果你想不加,你需要额外声明。
04:13
对吧,如果说我现在呢,那要是我们在买soq里边,你想加,你需要额外声明,但他和我买S狗正好相反,你如果不加的话,你必须额外声明,大家想一想,索引本身是为了提升他查询效率啊,那你想我现在在al里边所有的内容都是索引呢,那你说他这个检索的时候是不是效率应该很高啊,对吧?所以说呢,它叫什么呀,叫一个搜索引擎嘛。对吧,叫搜索引擎对吧?那它具体的一个结构什么样的呢?对吧,那我们现在那你得知道,如果是买搜狗的话,它的索引它底层使用的是不是我们B加tree对吧,它使用的我们B数对吧?那么如果说我现在elect测试呢,它底层使用的什么呢?使用的是我们的倒排索引对吧?那么这里又这个出现了一个概念叫什么呢?叫倒排索引。
05:02
对吧,叫倒排索引,这个倒排索引怎么回事?什么叫倒排索引呢?对吧?什么叫倒排索引对吧?那么咱们来看一看啊,假如说我现在呢,想做一个搜索引擎或者全文检索的功能,对吧?那么如果说要是使用我们这传统的观影数据库,假如说我要想实现咱们这些功能的话,对吧?那么这些东西是怎么实现呢?那首先我们得想办法,对吧,先把咱们的数据呢给存起来,那么如果关系型数据库存数据的话,那肯定在咱们数据库里面创建一张表,然后这块儿呢,是我当前表的一个主件ID,然后这块是不是就是我现在查询的一些内容啊,对吧?那么我现在查询的时候,那怎么查呢?比如说你在这里搜手机,那么这个时候呀,那我应该是从咱们当前这个商品表里边来查询,然后接下来来看一看商品的名字呀,啊这个模糊匹配和手机呢进行模糊匹配,那么这种查询呢,有两个弊端啊,如果你要使用咱们这关系数据库来设计的话,这种查询呢有两个。
06:03
B端,那第一个咱们现在在查询的时候,对吧,那么他需要用咱们手机和谁呢?和我关系生数据库,它里面的表的这个字段,依次的逐行的进行匹配,你想想我是不是得先去哎去查询手机,那你看一看咱们当前这里边有没有手机,然后呢,和他一次性匹配一下,然后呢,它匹配完了之后,我是不是得和第二行数据来进行匹配一下呀,对吧?依次的逐行的逐字的来进行匹配,那么这个性能呢,是非常差的啊,这个性能呢是非常差的,这是第一个,那么第二个字段这个弊端呢,就像咱们刚才描述的是对吧,什么呢?我现在想去搜索小米手机,但是呢,我不小心搜索成小木了。对吧,我不不小心做的是小木了,对吧?那么如果说你要作为全文检索这样的一个我们这个框架的话,那你就算是没有小木手机,你是不是应该得和这个小木比较接近的这个东西给我拿出来啊,给我查出来,如果说我现在要是按照传统关系数据库的话,那么这个时候一去匹配,那发现我这里没有没有什么小木,对吧?那么这里查询结果是不是空啊,对吧?那么这个时候如果我现在要是用我们现在这种搜索引擎的话,那么他发现这个小木和小米长得比较像啊,小这个木和米长得比较像,那么他呢,会什么呀?会做一个我们这样的一个叫匹配,然后帮你把小米手机给查出来,或者说什么,或者说我搜索的谁,我搜的小米手机。
07:29
对吧,但实际我里面存的什么小米手机对吧?那么这个时候呢,你如果关系数据库的话,它肯定查不出来,对吧?但如果说我现在使用我们现在啊这个elect search的话,那么这时候呢,他对吧也可以啊对吧,有一部分的近似匹配给你查出来,那最起码你可以把谁查出来呢?你可以把手机给我查出来,对吧,小秘你可以把找不到,但是呢,这个手机你应该可以找得到的啊,这手机应该我找到的对吧?那么它底层是怎么设计的,然后呢,可以让我实现我现在这种匹配呢?底层到底怎么设计的,就是我们的倒白索引,那么什么叫倒白索引,注意看啊倒排索引,倒白索引,那么它的技术方式呢,和咱们原来啊都不太一样了,对吧?那么传统关系数据库呢,它保存什么?哎,我当前这里边一这样记录它里边单词那个二的记录它表单词那个三的记录它单词都有哪些,这是我传统关系数据库对吧?那其实呢,你可以把它叫做正牌索引,叫正牌对吧?但如果倒排索引的话,那么注意它在保存数据的时。
08:29
轴对吧,那么咱们现在呢,那它是对我数据呢,来做了一个我们的分层啊,或者分词啊,不是分层是分词对吧?那比如说啊,我现在要保存我们现在这些数据,你可以把它理解成豆瓣网的一个我们这个影评对吧?那么这个呢,是我们现在这个主题ID,然后接下来这个呢,是我的标题,那么如果传统关系数据库的话,它是这种形式保这个保存,但如果说要倒排索引的话,注意它在保存的时候呢,它是把单词放在前面,然后把单词所在的或者所属的记录放在后边记录一下,对吧?那么我现在如果要是想使用盗版索引,那么首先呢,他得对什么呀,他得对我当前这个标题的数据呢做一个分词,所以说啊同学们如果说呢,你现在在咱开发的时候遇到一些技术性问题了,对吧,如果遇遇到技术问题了,对吧,那给你报的一些错呀,或者说提示呢,都是些英文的,你去查谷歌对吧,匹配都很好。
09:26
啊,匹配度很好,但如果说呢,你要遇到了和咱们的汉语言文学相关的一些东西的话,其实百度做的更好。对吧,就是百度除了说我现在啊要做搜索之外,其实呢,他这个搜索部门其实还养了很多人,对吧,就是什么呢?就是咱们这个语言学专家对吧,给他们做顾问,就是我现在在咱们这里边儿,大家想一想,我我我这里假如让你们分词的话,这个东西你怎么把这个把把把咱们现在红海行动影评你给我分成一个个单词,你们觉得怎么分合适,红海是一个。
10:02
红海行动是一个。啊,红海行是一个一看就语言专家是不是,然后影评算一个吧,啊海行算不算一个,海行算吗?海行海行不知道是吧,渤海银行吗。啊,这个这个东西你想一想,咱们现在这个汉语言是不是博大精深呀,这我我这不算一个单词吗?对吧,我现在这里这个渤海银行的不行吗。对吧,或者说我现在这不上海银行简称海航对吧,那你说我现在这这不算一个词了,对吧,所以说注意啊,这个分词其实呢,对吧是一个对吧,这个就比较困难的对吧,但还好咱们用的时候呢,有专门的分词器对吧,直接可以帮咱分了,到时候咱会接触对吧,那么他呢,在咱存储的时候注意啊,假如说我现在使用AI测试,那么同样这些东西,那么它的存储的时候不使用这种方式了,它怎么存的呢?对吧,来看一看,它是纵存对吧,他会把咱们当前的这些数据作为分词,我发现诶红海行动对吧,那么红海一个词,行动一个词,影评一个词,那我发现红海,你看除了在咱们的一这个这个标这这这个这个这个这个这行数据里边有,咱们现在二里边是不是也有啊对吧?然后咱们现在呢,在咱们这里边,这个行动在咱们一里边有,在三里边是也有啊,所以说你看咱们现在第一个放的什么,放的是我们这个单词,第二个是当前的单词,它出现的哪一个,我们这个标记里边,哪一条记录里边,对吧,那么它记录一下对吧,那大家想一想,那么如果说我现在啊。
11:38
啊,要是想去搜索我们现在这个红海的话。我现在呢,想去搜索咱们的红海的话,那么这个时候对吧,他还需要像咱们原来传统关系数据库这样直接呢,对吧,这一一个个的逐字的逐行去匹配嘛,说不需要了呀,对吧,那么咱们怎么做呢?一艘红海发现,哎,红海这个单词在这儿呢,然后接下来,那么咱们现在把当前这个单词它所在的这两条记录给呈现出来。
12:05
是不是就可以了呀,那么整个咱们现在其实我们这个在做这个搜索的时候,其实就是这样对吧,比如说我现在呢百度,那么如果他想提供啊咱们搜索功能,首先第一个他肯定得有爬虫机器人到咱们网上不停的去查询咱们的网页,就是你不管谁做的网页,只要是能联网,那么这个时候我机器人我都得给爬到输入到我们百度的库里边去,然后接下来一搜,咱们上硅谷对吧,那么这个时候注意啊,同学们,那么咱们肯定是这样的,他呢在搜索知识出来之后,那么你的网页是不是有很多关键字呀,你不可能说把这个网页的所有内容,我是不是都给你分词啊,对吧,它一般呢,就是把咱们keyboard就你网页的关键字对吧,给你分词,所以说呢,这个网站排名同学们其实呢,排前排后,除了我们现在竞价之外,那么有些呢,人为的调整,所以说有一个职位对吧,CU对吧,就优化嘛,对吧,Su优化我就现在做的网站对吧,那你怎么样去把它,我往前去靠一靠,对往前靠一靠对吧,这个关键词选的很重要。
13:06
啊,对吧,哎,我发现诶这个网站它的关键词里边包含什么呢?包含咱们这个的这个上硅谷对吧?那么这个时候呢,它再去查询,哎,我发现对吧?上硅谷这个词在咱们一号这个网站里边有,在咱三号这个网站边有,然后呢,在咱二号这个网站里边有对吧?那比如说我现在再来一个上硅谷,然后再加上一个什么呢?再加一个大数据对吧?那我发现啊,那么上微谷对吧?在一号网站里边有对吧?在咱二号网站里边有,然后呢,在咱大数据对吧?在三号网站里边有,在一号网站里边也有啊那你想一想,那我现在要给你展示的话,刨出咱们竞价排名因素,那你说我应该把谁放在第一个给你展示出来。是不是咱们现在一这个页面可以展出来呀,对吧,这就什么,这就是评分啊,就咱们现在按照匹配度,它会给你一个评分,所以说同学们你们其实这里也可以了解,对吧,咱们一搜我们这个上微谷啊,其实有的时候呢,你看到的可能不是咱们这个上微谷网站。
14:00
对吧,可能不是上柜网站,别的公司可能用什么呀,可能用你这个排名,就他们公司明名就什么呢,明明就是不是上柜谷,然后呢,他在这里在关键字里边来了一个对吧,加了一个上位谷。对吧,然后一搜一他也能能能搜出来还比较靠前对吧,所以这块呢,了解啊就了解,然后接下来呢,咱们现在呢在这里,那其实呢,我们如果说要倒排索引的话,就首先呢保存数据的方式,那你得知道什么呢?前面是单词,然后后边是单词奇数对吧?记住然后呢,基于我们这个分子技术啊,来构建咱们现在道白索引对吧?那么我们现在每一个记录啊,在保存数据的时候,对吧?那么它都不会直接存入数据库对吧。他先干什么呢?先需要对我数据呢,来进行一个我的分词,什么意思啊,假如说你现在有这么三个电影对吧?你现在有三个电影啊,它的一个我们的影评对吧?有三个电的影评对吧?一个是红外行动影评,一个呢是红外实验影,这个实木还有什么微活行动对吧?那么假如说咱们现在呢,在往保存的时候,它并不是直接一条条保存S里面去了,对吧?它要干什么呢?它对这个东西分词,然后分词之后,然后以这种形式保存到咱们这个al中啊,它以这种形式保存到al耳中,那么这种形式呢,其实就是我们倒白索引的一个表现,对吧?然后接下来,那我在搜索的时候,比如说啊,同学们,我要搜索什么呢?我要搜索红海行动对吧?我要搜索红海行动对吧,那么这个时候在搜索的时候呢,它也会对你搜索的关键字来进行一个分词,对吧?比如说把红海分成一个词了,把行动分成一个次了,那我发现红海在哪呢?在一二里边有,行动呢,在一三里边有,那你想一想到时候咱们现在。
15:41
再给我展示的话,是不是应该把123给我展示出来呀,那么这三个页面谁排在前面呢?一是不是出现了两次对吧,你看你这一个页面里面又有红海,又有行动对吧?那么他呢,把这一放在前面啊,把这一放在前面对吧?那这样的话,他的查询效率呢,其实啊是很高的,那么具体咱们现在呢,这个倒白索引,还有咱们B数它的一个对比对吧,那么像这个图呢,是我们这个必加数对吧,它的一个我们这个底层的图对吧,底层的结构对吧。
16:12
我问大家一个常识问题啊,这个B数是二杀数吗?这个分析的有道理啊,来,江梦涵,你来把这逼数给我说一下,我今天看你在看B数,是把B数给我说一下。那反过来二叉树是B数嘛。可以的,可以是B数,对他俩的关系是这样的啊,它的关系是这样的对吧?然后呢,咱们现在在咱们这里边大家注意,那如果说我现在呢,要是我们这个B处的话,其实在放数据的时候,对吧?那么它是怎么样来实现咱们的差距效率提高的呢?其实咱们在放数据的时候,它是不是有原则呀,叫什么左小右大吧,对吧,我当前比如说我现在这里对吧,是15,然后这边是56,那么这个时候呢,在15和五六之间,那么它呢啊,会把我们现在数据放进去,而且在放的时候基本上呢,有左小右大在里边,对吧,这个呢是我们这个B加tree对吧,B加tree对吧,那么如果要是我B的话,就没有前面这个最小的节点了,对,没有前面最小的节点了,对吧,这是没有的对吧,然后接着那么如果说要是倒白索引的话呢,大家注意倒白索引呢,那其实把第一个咱们现在呢,把单词给拿过来做一个分词啊,就是把它所存储的数据先做分词来进行存储,然后后边跟的什么呢?后边跟的是我当前这个词啊,它所在的位置,对吧。
17:42
那么除了我现在这个之外呢,那大家想一想,我现在呢,把这词对吧,给它分开了,把这词分开了,那么这里呢,可能从这儿开始一直到这儿都是我们这个A什么什么什么,然后从这儿开始到这儿都是什么B什么什么什么,那么如果你要查的话,那大家想想你从这儿到这儿是不是还得花时间呀,对吧?那么他呢,又给你做了一层索引,对吧?那么这次索引呢,就相当于什么把A呀什么把B呀什么把这个S啊什么这些东西给你拿过来了,对吧?这个也是为了增加咱们这个查询效率啊,也是为了增大咱家查询效率,好,那这块呢,大家稍微理解一下对吧?关于我们的Ali测试,它的一个特点,第一个天然集群,对吧,就算一个节点,那么也当集群集群进行处理,那么第二个咱们的天然分区对吧,就默认情况下它就有一个分区,如果你要再指定分区的话,比如说诶,我现在分区数是几,分区数是一,那么实际上它有几个区两个区。
18:37
对吧,是有两个区对吧?然后接下来还有一个叫什么呢?叫天然索引对吧?那么如果说我现在使用search来存储数据的话,那么默认情况下所有内容都会进行索引,对吧?那么如果想不索引的话,那么这个时候呢,你需要额外声明对吧,然后接下来。在咱们这里是吧,我把这个稍微停。
我来说两句