00:00
好,上课了啊,呃,还是先回顾一下啊。那我们就把这个嗯,DSL中啊,我们讲的这个对数据的操作再来看一看啊,呃,那首先第一个啊,就是你先要明白一下,嗯,在这个ES中啊,呃,我们是。存的数据啊,它的这个数据结构是什么样子的啊,先把这个搞明白。对吧,那我们这个分析了一下啊,就是基于一个对象的关系来做的分析啊。呃。有一个类呢,叫这个movie啊,然后然后再有一个类呢,叫这个actor。一个是电影,一个是演员哈,然后现在我们这个所能看到的关系呢,就是在这个电影中呢,我们维护了一个演员的一个列表。对吧。然后呢,现在有这么一个关系啊,然后呢,将来呢,呃,基于这种关系呢,会有很多数据啊,然后现在就想问你。如果说让你去设计的话呢,将来这个数据你应该怎么去存?
01:00
对吧,比如说你在这个传统的,呃,关系型这个数据库里面,你怎么会,你怎么去存。啊,然后呢,在我们这个呃ES中,哎,你应该怎么去存。对吧,那么当时我们这个分析过啊,如果说在这个传统的这个关系型这个数据库里面,呃,那么他肯定会要被什么拆分成很多张表来进行存储。是不是好,那我们分析了啊,就拆分成几张表呢。大家这个有说两张表的,有说这个三张表的啊,实际上是这个三张表啊,因为你要去表示一个什么关系啊,对于这个电影来讲啊,它里面会有一个演员的列表。是不是就这个从就从这个角度来看的话,我们看出来应该是一个就电影对这个演员的是一个什么一对多吧。对不对啊,但其实你这个回头想一想啊,这个演员啊,他其实也是可以什么去参演多部电影的。那就说白了啊,他其实也是一个一对多的,能理解吧,啊,那如果说你们的关系是这个双向这个一对多啊,就比如说我对你是一对多,你对我也是一对多,那我们就认为你们的关系呢,其实是一个多对多的一个关系。
02:06
啊,那对于这个多对多的这种关系来讲啊,我们在这个数据库里面去维护的时候,呃,那我们就会通过这个三张表来去维护。首先我们需要有一个就是这个末位表,然后呢,把它这个最基本的信息做一个维护啊,然后呢,有一个演员表,然后也是把它这个最基本的信息呢做一个维护啊,那么他们两个这个关系怎么去体现呢?我们会通过一个中间表来去体现关系,比如说诶。你的哪个电影哪个演员演的对吧,哪个电影哪个演员演的,哪个电影哪个演员演的,你就把这个关系呢,给他维护起来好,那这个维护起来以后呢。我们可以什么稍微去验证一下,比如说我现在想去查询某一个电影是有哪些演员去参演的,好,那我其实只需要来到这个关系表中的,通过你这个电影的ID对吧,就可以找到你这个所对应的演员了。那同样的道理,我们想看一下某一个演员都演过哪些电影,那也是一样的,你来到这个关系表中,通过你的演员的ID,那你就可以定位到他都演过哪些电影。
03:06
对吧,所以这种关系的话呢,我们就可以什么成功的给他这个维护起来了。好吧,这是这个传统的这个关系型数据库啊,它保存数据啊,就应该怎么去保存啊,当然是对于这种这种关系的数据来讲。好吧,那么当然除了我们这个多对多之外呢,我们还会有什么一对一是吧,还会有什么这个一对多啊,这种关系你在维护的时候,他其实又又又不太一样。OK吧,那这个我们就不再多说了啊行。呃,我们知道了这个在传统的这个关系型数据库怎么维护以后啊,我们又来说了一下这个在ES中怎么维护,其实在这个ES中维护的时候呢,就特别的简单了。啊,他不用去给你通过什么所谓的这个多张表,然后呢,去维护你们之间的这个关系,ES中呢,它就是把你的整条数据。对吧,你所有的这个数据呢,都给我什么处理成一个什么摘。嗯,处理成什么完整的一套什么加成数据,然后呢,我们把它作为一个什么作为一个document,就所谓的文档啊,所谓的文档,然后呢,直接什么存到ES中。
04:07
好,那就说白了,在这个ES中啊,我们存数据呢,实际上存的还是一个加成数据啊,就是一个一个的文档。好吧,那么至于你这个数据里面怎么去体现这个对象的关系啊,那就按照你的这个实际的这个关系来去体现就行了啊,比如说你有什么电影的ID,电影的名字,电影的这个评分,对吧?那你说我这个演员列表怎么体现呢?你既然你是个列表,那我再来一个字段呗,对吧,叫什么演员的列表,那演员的列表中是你的多个演员,那你就把你的每个演员也单独定义成一个对象。在这个摘中啊,一个大括号就是一个对象是吧。那你看一下,我把你的一整条数据呢,完整的处理成一个摘,我就什么直接就存到这个ES中了。啊,所以说它里面这个存储数据呢,存的还是比较直观的啊,就首先你所得就是你所你现在所有能看到的东西,那我基本上都是要什么把它处理成一条数据,然后呢,直接什么存到这个ES中的。
05:01
就比用说这个像我们的传统的这个关系性数据库啊,还得什么去做一个拆分啊,你在这个设计表的时候呢,还得什么按照各种范式啊,各种原则啊,然后去设计这个表,那ES中呢,其实就没有这种条条框框了啊,这是一条完整的建设数据,你给我扔进去就完事了。好吧。行,这个先要指导一下的啊OK,呃,那我们知道它这个纯的这个数据结构以后啊,我们就可以开始去研究啊,它这个数据的一些操作啊,比如说。呃,怎么建索引对吧,建索引的话呢,我们有,嗯多种方式吧,第一种方式就是。直接什么手动的啊,这一个什么索引,就是put后面什么带一个这个索引的名字。然后呢,呃,我们这种在索引的话呢,我们是不会去指定你的这个字段的啊,就说白了,你这个索引中呢,有哪些字段,字段是什么类型,我们是没有指定的。将来呢?呃,会按照什么呀?这个将来呢,他会什么,按照这个第一条数据。
06:01
自动的什么做这个推断。对吧,比如说你现在有一个索引了,然后呢,我给你啊,诶扔进去什么一一整套数据。那你的第一条数据中啊,你都包含哪些字段啊,就说白了啊,你的第一条数据假如说就它吧,这不就一条数据吗。是不是来你把它扔进来以后呢,它会怎么自动帮你去解析这个JA啊,比如说呢,我解析到,诶你有一个ID好有一个名字,有一个什么多半score,诶还有一个什么演员列表,那演员列表中的话呢,我一看啊,又是一个对象,好,那你这个对象中的话有个ID,然后有个名字。他就能够把这个字段名给你解析出来。同样呢,他也能够把你的什么字段的类型给你解析出来,那我就看你这个存的这个具体的值呗,如果你是把双引号包起来的,那你就是一个字符串,对吧,如果说。呃,这个这个比如说啊,这个我们稍微改一下啊,比如说你这个。对吧,这个多半扣后面写了一个什么数字,它不是一个双引号包起来的啊,那你就是一个呃,Float对吧,就是一个浮点型的。
07:00
好吧,那当然如果说还你还有一个数字啊,这个数字呢,呃,不是这个双引号包的啊,它是一个整数,那它就是一个什么落类型的对吧,它都能帮你推断出来啊,呃,那么这里面我们重点去说的就是一个字符串类型啊。这个字符串类型,它在推断的时候呢,默认情况下,它会给你存两种方式啊。对吧,一种是那个text啊,一种是这个qword啊。这个大家应该都记住了哈。在这个ES中啊,对于这个字符串来讲,如果说你纯成这个tax类型,那么它是要给你去怎么做这个倒牌的啊,做那个倒牌索引的对吧,那如果说你纯成这个qword类型,它是不会给你做这个大牌索引的,那么这种类型我们主要是用于。干嘛呀,用于做这个直等判断对吧?哎,用于做直等就是我可以什么呀,把你这个完整的一个什么结果拿出来,然后呢,做一个什么判断,那如果你做的是这个text,它是会怎么做这个分词的。是吧?好,这个大家知道啊,OK啊,当然我们说的是做这个职等,你你这种类型的,你可以什么做分析统计啊,就做排序啊什么都可以,反正你排序的时候,或者你统计的时候,你肯定是拿出来整完整的数据来去做的嘛,对吧,那你完整的数据的前提啊,就是你还是要做这个直的。
08:14
对不对,就是我们要完全相等啊,这种叫直等啊,OK。行,这是我们的,呃,就是不指定这个字段啊,那当然我们后面还讲了,就是我们可以什么在这个键索引的时候呢,自己去指定它的什么mapping。对吧,就是你这个双引中啊,有哪些字段。然后字段呢,是什么类型啊,我们可以自己去指定好吧,这个后面来说啊。想加索引或者这个删索引啊,这个也简单啊,就delete后面加个索引就行了啊,这个不多说啊,来插入数据啊。呃,插入数据的话,我们有两种方式,一种是这个幂等的这个写入啊,一种是这个非密等的写入啊,那么他们两个这个区别在哪呢?啊给大家说一下,呃,密等的话我们写的是put啊,我们用的是put,然后这个非密等的话用的是这个post啊对吧?这两个是不一样的啊,这个非密等用的是这个post。
09:09
好吧,然后除了这个关键字用的不一样之外呢,还有一个是不一样的啊,你的密登写入必须得指定你的文档ID。那我怎么知道你是不是一个相同的数据呢?难道说我会给你看你的每个字段是不是一样的吗?所以他不会看这个东西。对吧,它怎么去识别你是不是这个相同的数据呢?就拿你的文档ID来去识别,只要你的文档ID是一样的,那我就认为你是相同的数据,我就会给你做一个覆盖。对吧,好,那有同样道理,你这个非密的,它的这个写入呢,就是不需要你去指定这个ID的,你每次给我一条新的数据。他都会什么,给你生成一个,呃,这个就是它会自动给你生成一个ID。那你每次生成的都不一样,那都不一样的话呢,对于我这个ES来讲,他认为这就是一条全新的数据,那我就什么正常给你写进去了。对吧,这就是一个什么分泌等的一个写入,好吧,就这两种写入方式呢,大家一定要,呃知道一下啊,等我们这个后面真正往这个ES中写数据的时候,你要分析明白,我们是需要采用这个密灯写入,还是采用这个非密等的写入。
10:09
啊,你想清楚以后呢,你才能够知道到底是用put还是用这个什么post,对吧,到底要不要指定这个ID。能听懂吧。好,这两个是比较重要的啊。像下面这个修改啊,这个修改的话呢,嗯,如果说我们一般修改啊,肯定是只是想修改这个指令的字段哈。对吧,那我们要什么使用这个post,然后呢,呃,用这个什么update。然后下面为什么指定一下你的dock,就是你要改哪个字段啊,把它写上就行了,好吧,这了解一下吧,啊,其实我们这个修改很少好删除,呃删除的话我们可以什么删除一个dock啊,就是把这个ID纸上,就你的这个dock ID写上,我就把你这个对应的一个什么dock给它删掉。啊,这个也很少啊,知道一下啊好,那重点是这个查询了啊,查询的话呢,呃,我们。给大家说一下啊,查询的话呢,我们主要是用这个search。
11:01
嗯,就是get啊,就是所有的查都是一个get啊,但是我们要这个查数据的话呢,我们就用这个什么search好吧,啊,只要你是查数据,那基本上都是一个search。OK。呃,然后这个查的话呢,我们这个会有一个结果啊,这个结果中的话有很多东西啊,呃,其实我们重点看就是你这个查到了这个结果对吧,查到的这个每条数据啊,但这个有些时候的话,我们可能也需要什么关心一下这个别的一些信息啊,就是这里面,呃,没有给大家去解释啊,大家可以这么简单去看一看啊。像这个每次查到以后呢,都有个什么talk对吧,这是你的耗费时间。明白了吧,然后下面这个time up是否超时啊,这应该都能看得到啊,然后这个刷啊,这个total什么意思,就是我发送给多少个分片,就是我本次这个查询,我总共发给了多少个分片。能听懂吧,然后成功的啊,就是你有多少个分辨查成功了。是吧,跳过了多少个,失败了多少个,对吧,这个应该都能看得懂啊行,然后呢,呃,这几个其实我们一般也不太关心啊,我们重点关心就是这个从hit开始。
12:01
就是命中对吧,从这个命中开始看这个里面的这个total表示什么?表示就是我们命中了多少条结果啊,这个数字呢,表示就是。我总共命中了多少条数据?了解吧,就是你本次的查询啊,你总共命中了多少数据啊,然后呢,最大的评分啊,就是比如说我们的每条数据,它不都有这个评分吗。是吧,那你这个最大的评分是多少啊,它会有一个什么最大的评分啊,然后呢,接下来我们看的就是这个hit里面,这就是我们真正命中的结果啊,比如说你的每条数据,这个S啊,这就是你的每条数据。能看到吧啊,这个没有给大家去解释啊,我们这个回顾的时候,这个简单带一下好吧啊,一般情况下其实也不看这些啊,我们主要就是看这个黑里面的东西OK啊。然后呢,呃,查询这个所有的数据呢,就是通过那个search就可以了,如果要查询一个一个do,那就什么给上一个,呃通过一个什么ID去查,对吧,查全部的话就是一个search啊,当然呢,呃,这里面你可以写个query,然后写个什么ma啊,但其实一般的没这么,不会这么去写,很麻烦,我直接什么这样就可以了。
13:10
对吧,反正我们都是查这个所有的数据,那我就什么直接把它写上就行了,你就没必要说啰里吧嗦的啊,再写个query,然后里面再写个什么MA2就匹配所有啊,这个一般人不会这么去写啊,就直接这样就可以。好吧,这个写query的时候呢,一般都是我们有有这个具体的条件了,对吧?啊,然后再会去写这个query,比如说我们想什么,通过这个分词做这个查询了,那你就得写query了呀。你说你要这个做分次查询,你要分次匹配什么呢?那你就得写match match里面就写你要所匹配的东西。对吧?啊,这种情况下你就必须得写query了啊,但你要查所有的数据就没必要写它了啊,OK。行还可以什么,按照这个分词的这个子属性啊,这是我们的。比如说演员列表中啊,演员列表下面的话,我们又是一个一个的对象,对吧,每一个什么演员对象,它里面有ID属性啊,有什么这个内幕属性。
14:00
是这样的吧,那你要用哪个啊,比如说我要用ID或者什么用name,那你可以什么直接去点啊,比如说点name呀,什么什么点ID呀,啊可以直接去点的啊。行,这个不多说啊。然后短语啊,这个短语是什么意思呢?呃,就是我们在做这个分词的时候啊,比如说我有这个,假如说啊,我是叫operation。对吧,就是红海行动operation c啊,如果说你直接拿上这个去做这个match的操作,注意啊,我们用的是match啊,做这个match,那么将来你能够匹配上operation的,能够匹配上red的,能够匹配上C的啊,这个数据我们都会给他查出来。都会掉出来,因为你要做分值嘛。对吧,但有些时候呢,我们可能要求是这样子的啊,就是呃,我写了一个什么词啊,这个词呢,虽然说也能够再拆分啊,但是呢,我不想让你再再去拆了,你必须得什么两个。这个挨着出现啊,就是这个顺序挨着出现,你不能说这个拆开以后啊,你在这个最左边的匹配到了一个,然后在最右边的匹配到另外一个,中间还有别的内容,这种情况下呢,我就不想要了,我想要的是你们两个完全挨着的,好,那这个时候我可以什么使用这个短语啊。
15:07
对吧,那短语的话,它就什么不再把这个东西呢,作为一个什么分词去拆了。理解了吧,直接拿这个在你的这个原始数据里面做这个匹配。好吧,只要我能够什么完整的匹配上他们,OK,那这个数据我就可以给你调出来了。明白吧,啊,这要知道的啊。行,然后下面就是过滤了啊,过滤的话,我们有这个什么直转判断啊,就使用这个term啊,做这个直转判断啊,但大家注意一下这个写法啊,这个写法就会什么越来越复杂了哈,首先你还在做query啊,在做查询,那就写query。对吧,然后呢,呃,我们一般写过滤的话,我们都会带上一个什么布。啊,然后在它下面写这个feature啊,Feature里面的话就是你要知道判断就是一个term啊,那如果说你是一个范围判断。范围判断的话,我们用的是这个range。能听得吧啊范围发用的是range啊OK,上面还有一个,呃,这是就是你看了啊,我们既会有这个feature,然后又会有这个什么,呃,Match匹配的情况下,这就什么相当于什么多个条件了呗。
16:08
对吧,这个时候我们一般都会写到这个什么波尔多啊,写到它里面OK吧,行呃,那我们这个地方的话,还有一个东西,就是这个master和那个瘦的这个事儿啊,对吧,这也给大家说过了啊,就是一个符合查询啊,就这个东西。这个master表示什么表示啊,这个条件你必须得满足啊,必须满足,如果不满足数据是不可能出来的啊,那如果说你要是用了这个should的话,这个条件是可以满足也可以不满足的,对吧,只要你这个条件能够匹配上数据,那这个数据呢都会出来。明白吧,啊,那如果说呃,我这个能匹配到数据,然后呢,他在使用这个数字去做这个match的时候呢,如果说诶我也能够什么跟他正常匹配,那么这套数据的话,我会给个分啊,我给你我给怎么给你打分的啊,但如果说我只有这个filter能够匹配上,但是呢,你这个呢数的话,它是怎么匹配不上的,那这个数据呢,我也会调出来,但是呢,我是不给分的。
17:02
对吧,就这么点区别啊,这个大家要知道一下啊,好,还有什么过滤的修改删除啊,这两个我就不说了啊,这个基本上不会用啊。好,再往后排序啊,排序的话就使用这个short去排就行了,比较简单啊。分页呢,呃,分页也简单啊,一个是from,一个是size,但是你要明白这个from表示什么,Size表示什么啊,Size呢,就表示我要取多少,取多少条数据,比如说取两条啊,取三条啊。对吧,那这个from表示什么意思呢?它表示的是从哪一行开始去取数据。能听懂吧,比如说你有这个N多条数据啊,什么12345啊,N多条数据,那你说我每次取的时候,我从哪个位置开始取呢?这就是我通过这个from来去决定的。OK,那我们在这个分页中,我们怎么去计算这个from啊,这也是有讲究的啊,给大家去说一下怎么计算呢。怎么去上。同学们,我们通过你的。叫什么呀,叫页码对吧,比如说我现在想看什么第三页好,那为什么第三页减去个1OK,然后再乘以什么,乘以你这个page size,就是你这个每页显示多少条,就说白了你要取多少条。
18:10
对吧,这样就可以算出来,诶,我这个from是从哪里开始的啊,这是一个公式啊,大家把这个公式记住就行了,你的分页呢,基本上都是这么去做的。好吧,分线公式啊,都这样去做的啊,OK。好,然后再往后这个高亮啊,高亮的话呢,也简单啊,就是加一个这个highlight扯就完事了啊,然后呢,呃,我们也不需要自己去写那个什么样式啊,这个样式啊,我们将来都是什么交给这个前端啊去定义的,我们不要去做这个事儿,好好聚合聚合啊,这个聚合是比较重要的啊,同学们,因为将来你的这个分析计算啊,你很少说,呃,就简单做个什么查询对吧,或者简单什么做个排序就完事啊,很少我们一般都什么配合上什么你的聚合的啊,比如说要什么做分组,分组以后呢,求统计。啊求平均值啊等等一些啊,所以这个聚合呢,其实相对来讲在查里面还是比较重要的啊。
19:00
想这聚合怎么用呢?那就是一个什么aggregations啊,我们简写成了这个AJS。对吧,然后呢,你在写的时候,你要记住啊,所有的聚合肯定是什么,先有分组啊对吧,诶先有分组,分完组以后呢,在组内呢,再去做你的什么聚合操作,比如说你是求count呀对吧,求什么求求求这个什么,呃,求sum呀对吧,或者求avg呀啊等等等等一些就是你在你这个分组以后你要做的事情。对吧,那还有可能我们就求完以后呢,还要什么再去做,我们做这个排序,就是分钟以后的这个排序。是不是他们都是一个,呃,相当于什么一个顺序的一个关系啊,所以在写的时候你就注意了啊,我们先写的这个,其实就是要想做这个分组,比如说我们要要取个名字啊,这个名字你可以随便去取啊,那你分组的话呢,你要什么按照你的某个字段去分。那你某个字段你在分的时候,你是做直等的判断。还是做什么判断呀,那一定是做直等判断,就是相同的这个名字,我才能什么分到一个组里面,你不要说在分组的时候还给还给我什么做这个分词对吧,这肯定不行啊,所以说你看一下啊,如果说你用的是一个什么字符串的,那么它既有这个text的,然后又有keyword的时候,那我们一定选的是keyword。
20:11
对吧,好,然后至于这个分多少个组啊,这就看你这个实际情况,比如说你按照这个性别分组,那两个就够了,对吧,你按照年龄分组,那我觉得你至少得写100个吧,是不是零到100岁行,就大概这个意思啊,就是按照你这个实际的情况呢,去定一下,我到底要这个分多少个组啊。好呃,然后对于这个count的这个结果来讲啊,我们只要做分组就可以了啊,它是默认会什么把这个count结果送给你的,就不需要你自己去写了哈,Count会送给你啊好,但对于这个皮它的结果,比如说我们在这个分外组以后呢,我们想去求什么呀,想去求这个avg了,对吧,这个时候呢,我们需要在你的主内啊,在你的组内,然后呢,再去写一个HG。这个写的什么,这个写的就是你的聚合,比如说哎,要取个名字啊叫avq,就是什么呀,按照这个呃平分啊,然后呢,去做一个什么平均值的这个计算啊,然后下面这个类型的话就是你的avg。
21:05
对吧,告诉我啊,按照哪个字段帮你去做这个平均值,那你告诉他这个字段名字,这个是有一个顺序关系的啊,先做你的分组,分完组以后呢,在组内再去做,做你的什么聚合,那如果说我们还要有排序,排序的话,就什么在你的组内做这个排序。对吧。啊,说这个你在写的时候呢,你就按照我们这个之前写circle的那个方式啊,按照写circle的那个什么思想去写就行了,啊你写so不也是什么先。是吧,Go by以后呢,再去怎么就求你的什么count呀,求什么什么sum呀。是吧,啊,你求出来以后呢,你是不是可以基于这个东西再去什么做一个这个叫什叫order呗。对吧,叫奥啊,应该叫什么啊,对,就叫奥德对吧,奥德什么什么东西再去做一个排序呗。是不是啊,这个思想都是一样的啊,只不过他这个写起来呢,呃,这个不太一样而已啊。行。呃,这些呢,是我们最基本的这个对数据的操作啊,这个大家是一定要会的啊,特别是这个查询啊,特别是查询一定要会啊,因为将来我们对这个ES的使用啊,呃,基本上都是在做这个数据的一个查询啊,那写入肯定有啊,如果你不写入数据你是查不了的,但写入的话就很简单,我们就是基本的写入。
22:16
明白吧,啊,基本的写入就可以了啊,但这个查询的话,它是有这个千变万化的啊,好,但是你再怎么变,你无非也就那么几种情况,对吧,查说有按照条件查询,按照聚合结果查询。对吧,啊,没有多少的啊。行,那这就不说了啊,然后接着往后看吧。呃,再往后是这个C考的使用啊,这个我们做了一个简单介绍啊,就是目前这个ES呢,也开始支持这个circle了啊,但是呢,呃,还支持的不是很很全面啊,它里面呢,呃,有一些功能还用不了,比如说这个真删改的功能它用不了。啊对吧,还有就是什么,比如说这个搜狗的这个本身的一些什么特性啊,像什么窗口函数什么,它也不支持啊,所以这个目前来讲的话呢,呃,这个搜狗呢,还不能够说直接什么去替代替我们这个DSL明白吧,因为有些东西DSL能做,但是你这个so口做不了。
23:09
所以说现在我们这边先不着急使用circle口的啊。等这个后面啊,他这个完全。等这个后面啊,他这个完全这个支持这个soq以后呢,我们再去使用它好吧,现在先不用啊。好了,呃,这是circle啊,然后下面是我们讲一下这个中文的这个分词啊,这也很简单啊,你就先知道一下,呃,这个ES默认情况下啊,中文分词呢,就是按照你的字去分,一个字一个字帮你去分的啊这个不太好。对吧,这个不太好啊好,那我们要安装一个这个IK分词器啊,它就能够什么帮助我们按照这个相对比较正确的一个语义啊,然后呢,做这个划分,就是会把你的每个词给它这个分出来。对吧,啊,这个就呃怎么装的就不再说了啊好,那你这个装好以后,以后我们怎么用呢。那我们就需要什么在这个建表的时候,在你这个索引的时候呢,呃,你的手动去指定这个mapping,那你手动这个指定mapping的时候呢,我就可以什么手动去指定上什么呀,你的分词器,比如说啊,我们在手动指定这个mapping的时候呢,假如说你的名字啊,你用的是这个text,那所有的这个text类型都需要什么设置到这个分词的。
24:18
对吧,那如果说你有中文的情况下,我就给你指定一个这个分词T。明白了吧,啊,就这样去指定上你用什么分词器啊,就可以正确的对这个中文的进行这个分词操作。好吧,这不说了啊。呃,然后最后我们讲了三个东西啊,这仨哥们啊,这基本上都是一起用的啊,这个分割收银,收银的别名,还有收银的模板。啊,那这个分割索引我们是,呃,为什么要去用它呢?啊,因为有这么几个问题,首先第一个问题就是呃,如果说我们的这个字段啊,我们的这个需求发生了改动我们的字段啊。需要什么做这个修改,比如说我要加字段对吧,或者什么减字段。改字段类型什么的。
25:00
对吧,那这些操作这个ES,呃,它怎么去做支持呢?啊,它能不能够支持我们这个非常方便的去修改这个字段的个数,字段的类型。啊,答案是不行。对吧?答案是不行,为什么呢?呃,因为它不支持对这个就是索引的这个结构做更改。啊,那么这种情况下我们就得想办法啊,说能不能那个呃,我们自己想办法做到这个事儿啊,然后这个时候我们就提出了这个分割索引,就说什么呀,如果说你涉及到这个变更的场景的时候,那就什么重新创建一个索引不就好了吗?对吧,之前的索引我就不用了啊,然后重新创建一个索引,我把数据呢存到这个新的索引中,你再改呢,诶我再往一个新的索引里面放,你再改呢,我再往一个新的收里面去放,这样就可以了。那么这样的话就会导致我的数据呢,是分散到不同的索引中的啊,其实就是一个分割索引。对吧?啊,然后再一个就是呃,我们如果说一直把数据呢,放到同一个索引中也不太好哈,也不太好,我们还是尽可能希望能够把这个数据呢,给大成拆散了,拆散了去放啊,比如说我们这个企业中啊,一般都是按照这个天来去这个拆的,就是我一天的放一个索引,一天的放一个索引,一天的放一个索引。
26:06
那这样的好处是什么呢?好处就是每一天我都给你一次更改的机会。对吧,以及呢,我们数据呢,放到不同的天里面,将来我再去查的时候就会比较方便,比如说我要查某一天的数据,直接找到对应的这个索引就行了,我也不用什么去做过滤。对吧,但如果说你都是完整的放到一个索引中的,那你查的时候,你扫描这个数据范围比较大,你还得怎么去做过滤,这个不太好。是吧,说是这个企业中啊,我们这个约定收成的啊,我们就会使用到这个分割索引。理解了吧?好,呃,它有它的好处,但是呢,它也会带来一些问题,比如说带来问题就是那你每一天都要建索引,这个索引谁帮你去建对吧,再一个你把数据呢,分散到不同的这个索引中了,那我在来查的时候,我要查一个还好,如果说我要查一个周期的数据。那你这个索引太多了,我应该怎么去查?对吧,带来这两个问题啊,那么这两个问题的话呢,诶我们也什么呃,通过什么别的这个方式啊,做了很好的解决,比如说这个双音的别名啊,帮你解决什么问题呢?帮你解决了索引太多不好查的问题,你可以把你的索引啊统一取一个别名啊,你们都取一个外号。
27:10
对吧,那我将来查的时候,我直接查这个外号,我就能够什么从你从你们这些所以中去拿数据,对吧,查这个外号就相当于在查你们。是吧,说这个收音的别名啊,他就很好的解决了这个问题啊。那再一个就是。见,所以这个事儿。建索引其实不难哈,因为这个ES它是可以怎么帮助你去建索引的。对吧,就你直接什么直接铺的数据的时候,如果说你这个收音不存在,那我把这个收音建出来,再把数据给你放进去,如果说你的收音存在,那我就什么直接把数据放进去,这个ES就能帮你去做。啊,但问题是你让他自己建索引的话。有些东西不可控啊,就比如说我们这个数据类型,它会自己去推,别的类型都还好,重点是这个字符串类型。嗯,字符算类型,它就什么推的不太合理了啊,因为它默认都会推两种,一种是text,一种是那个qword,但其实我们可能要求你光text就可以了,或者什么你光用这个qword就可以了。
28:08
对吧,它就推的不太合理啊,所以说呢,我们就希望说我既想让你帮我建索引,然后呢,我还想能够自己手动的去控制这个类型啊,这个时候我们就用到了一个什么收益的一个模板,对吧,那你可以什么先写一个模板啊,这个模板中的话呢,就把你这个所有的这个mapping啊和什么什么sing啊等等一些东西都定义好啊,你有什么字段,字段什么类型。对不对啊,然后你有几个下的啊,你的别名是什么,你都可以统统都把什么定义好在这个模板中,那么将来我们的ES再去建一个索引的时候啊,在建某个索引的时候呢,只要你的这个索引啊是匹配我这个模板的。那么它就会什么借鉴于这个模板,然后呢,帮你建这个索引,那么这个索引建出来以后呢,它里面有什么字段,字段什么类型的,完全是按照我这个模板来的。能听懂吧,啊,所以说我们就可以怎么通过这个索引的模板呢,去解决这个索引分工以后啊,每天见索引这个事情。
29:01
好吧,啊,因此啊,他们三个兄弟仨是吧,正常情况下都是什么放到一起去讨论,放到一起来去使用的。OK了吧,好行吧,这是我们这个。前一天讲的东西啊,就给你们带着这个过了一遍啊,好吧,就这样。
我来说两句