00:01
OK啊,那我们接着往后说啊。呃,接下来啊,我们给大家去。讲一个讲一个话题啊,这个话题呢,叫这个分割索引啊。呃,首先这个先说明一下啊,这个分割索引呢,它其实并不是一个ES提供了一个什么什么某个什么知识点啊,或者是某个技术啊,不是,这个是我们企业中对ES约定俗成的一种使用方式。明白吧,企业中对ES约定俗成的一种使用方式啊,我先把这个强调明白了,它不是什么什么技术。好来,那么讲它之前,我们先。给大家去分析几个问题啊,分析几个问题啊。呃,首先啊,我们ES呢,是不允许你对这个索引结构进行修改的,就说白了,我的一个索引啊,这个index我创建好以后呢,它的结构我是改不了的。明白了吧,结果是我不让你改的好,那么这个时候我们来分析一个问题啊,如果说我的业务发生了变化了,我的字段呢,需要进行修改。
01:04
ES应该怎么应对呢?就假如说啊,我之前的创建好一个索引,总共有三个字段。好,那我一直用一直用,用了好几年,突然呢,我的业务呢,需要什么发生更改了,那我的数据呢,变成了四个字段或者什么五个字段了,这个时候我就要求你的ES中呢,能够帮我去存储这么多字段,但是呢,你创建的时候呢,只有三个字段。对吧,这个时候你怎么去应对这个场景,就是我的业务发生变化了,我的字段需要进行变更了,需要增加了,需要减少了,需要改类型了。怎么应对?前提是他不允许你对结构进行修改,就这个结构你甭想了,你改不了,你创建的时候是什么样子的,那我现在还是什么样子的。对吧。你就想想吧,这种情况应该怎么办?这就比较难受了吧。
02:00
啊,我想改。但他不让我改。是不是啊,正因为如此,然后呢,我们在企业中使用的时候呢,我们就摸索出来的一种方式,这种方式就是分割索引。你看啊,既然你不让我改,那我就不改你。我重新建一个索引不就好了吗?对吧,我重新新建一个索引,然后你后续的数据你就什么写到我的这个新的索引中不就完了吗。是不是很好解决的呀。你原来那个不让我改,你原来是只能写三个字段,对吧,那我以前的数据都在你里面写的呢,现在你突然变成什么,变成四个字段了,你又不让我改,那我就不能往你里面写,因为你帮我存不了这么多字段,那我什么呀,重新新建一个索引,我后续的数据我要进入到我的新的索引不就好了吗?是不是?对吧,所以很简单啊,而且大家注意哈。这个我们往新的索引中放。你还能,你是不还可以把这个数据。
03:03
给它放到什么不同的索引中啊,你原来如果说啊,你这个数据呢,全是往一个索引中去放的,那将来我不管是查也好,或者怎么着也好,都要都要从这个索引里面去做。对吧,但现在如果说我能够把数据你看啊,放到这个新的索引中呢,就你里面有些数据,我里面也有一些数据,那我这个数据是不是可以更好的去做这个负载均衡啊,同学们就更好的把它这个做这个分布式的这个存储是不是啊,它还是有一定的好处的。OK吧,啊,而且啊,大家注意。呃,我们企业中啊,这个字段的这个更改场景,或者这个业务的这个更改场景呢,其实还是有的,而且有时候呢,也很频繁啊,可能这个隔几天我就改一次,隔几天我就改一次,隔几天我就改一次。对吧,那么干脆听完了,同学们干脆我们就摸索出来的这样一种道理,就是这样的一种使用方式,什么方式呢?那我就不管你改还是不改了。对吧,我就什么统一按照什么呀,每一天或者说每一周啊,或者每一个月啊,就看你的这个实际情况啊,我都重新创建一个新的索引。
04:05
其实我并不是说为了去应对你这个修改,如果你要修改,那我是一定要创建一个新的索引的,如果说你不做修改的情况下,我也可以不不创建新的索引,你的数据呢,接着往上面去进就可以了。对吧,但是呢,你用久了以后,你会发现有一些问题,因为你的大量的数据呢,都放到一个索引中,你再去查的时候,你不太好查,比如说你存了一年的数据,但是呢,我只想去查这一年中某一天的数据。那你就要从你整个一年中的去调一天的数据,你的扫描范围是特别特别大的。能听懂我的意思吧,所以说这个企业中呢,它就什么摸索出来说,那我就什么按照一天或者一一周或者一个月,我就单独存一个索引,比如说按照天然分割,我一天的数据,我就往对应的这个天里面放,比如说今天是三月26,那我就放到三月26这个缩影中,明天的数据我就放在什么三月27这个索影中。对吧,后天的数据呢,我就放在什么,放在这个三月28这个索引中,我一天给你创建一个新的索引。
05:01
好,这样的话大家注意啊,首先我每天创建新索引,那我就可以什么支持你每天都对我的数据的格式呢,做一次更改,比如说你原来三个字段,明天说我要加一个字段,行,没关系,我给你一次机会。因为我要建索引了,我建新的索引,我就可什么把这个新的字段加进去,后天说哎呀,我觉得少了,还得再加一个五个字段,行没事,我给你一次机会,因为我后天也要建一个新的索引。对吧,首先这个字段变更的场景,或者什么业务变更的场景,我是能够应付的,再一个我把数据呢,放到这个不同的索引中,那么。我们再去统计每一天的数据的时候呢,我是不需要做大量数据扫描的,我想统计三月26的,那我就直接找到这个缩音就可以了,我想统计三月27的,我就找到这个缩音就可以了。明白我的意思吧,同学们,我把数据呢,给大家什么分的更细了,好,当然这个你现在肯定是能够看到好处的吧。对吧,好处是大大的啊,但是呢,它也会带来一定的。性能影响啊,因为你同样的数据,如果说你放在这个多个索引中,那你多个索引就会带来什么多的煞的,对吧,带来多个煞的,那你这个多个Sha的情况下。
06:13
你占用的这个CPU和这个内存就会相对更多一点。明白吧,但是你要从这个角度来考虑的话呢,我觉得它带来的这个好处远远要比它带来的这个影响。要。多得多啊,就好处一定是比这个影响要多得多的,因此这个东西我们就可以忽略不计了啊,我只看到你的好处。明白了吧,啊,只看到你的好处啊,行,所以你看当我把这个描述完成以后呢,大家可能也大概能理解了啊,它其实跟什么呀,跟我们这个have中的那个什么呀,分区表特别像。你看啊,你原本呢,就是把一个索引呢,啊,把一个数据呢,放到什么统一的一个索引中。好,如果说你的字段不变更的情况下,那我这数据呢,都进去啊,这个还好,因为你不不变更字段嘛,那顶多就是我这里面维护更多的数据而已,你将来查的时候呢,不太方便,对吧?好,那现在我的方式是什么呀?我按照天啊,或者是按照一定的周期,是一天也好,或者一周也好,或者一个月也好,你自己去定哈,按照一定的周期呢,我把索引给它拆开,比如说啊,1月1号的数据放在这个索引中,1月2号的放在这个索中,1月3号的放在这个索引中。
07:20
对吧,那你看啊,这个效果是不是跟大家以前学的那个还的那个分区表是不是特别像啊,就一天一个分区,现在是什么一天一个索引。明白了吧,同学们好,那么最终解决的问题就是我能够应对你字段变更的场景。我还能够。解决什么呀?解决你啊将来数据查询数据扫描范围的这个问题,你可以什么扫描更少的数据,对吧,所以你看它的好处就是查询范围的一个优化。明白了吧,再一个是什么结构变化的一个灵活性啊,这就是我们分割索引能够给我们带来的好处。
08:00
这个很好理解了吧,同学们啊,所以说啊,我们将来再去使用这个ES的时候,一定基本上都是一天见一个索引,一天见一个索引的。啊,也不能说一定啊,基本上都是这样,企业中都是这么去搞的,都这么去玩的。好吧,啊,这要知道啊,这是我们这个分割索引啊,这样的一个。呃,话题。好,那么这个说完以后啊。可能有同学已经想到了啊,或者还没有想到,我给你稍微点一下哈,好处你看到了,坏处的话,就是刚刚我说的那个什么CPU内存啊,带来的一个负载啊,这个我们不忽略不计,明白吧,因为你想做做这些操作,那你总得付出点啥东西是不是啊,这个我们忽略不计啊,就顶多就什么多占点资源而已啊,可能就多花点钱。是吧,但我觉得这个都是值得的啊,但其实他还会有另外一个问题,什么问题呢?你想想啊,你每天都去见一个索引。对吧,你每天都建一个索引,这个索引谁帮你建啊。
09:03
对吧。这个索引谁帮你建?每天都要去见一个索引,而且我们知道啊,你见索引的时候,你可不能说让他什么按照你的数据帮你去做推算啊,因为他推算出来的不太合适,因为有的字段我是需要什么做倒排的,有的字段的话我就只需要什么,我只需要做列存就行了。对吧,但他推出来的话呢,他可能两个都给你存了。是吧,所以说既索引这个事儿,我们是一定要去控制它的,那你要控制的话呢,你只能是人为的控制。那你不能说让我这个每天派一个程序员。每天晚上凌晨这个零点刚过,行,赶紧去见个手影,零点刚过好,赶紧见个手影,零点刚过赶紧见个手影,那你这日复一日。谁能受得了啊?对吧,首先去想一个问题啊,这个问题就是谁见索引啊,见索引这个事应该怎么解决。好,再一个问题。你把数据分到了这个不同的索引中了,你看似的好处就是我在统计每一天的时候,它变得特别的方便。但你有没有想过,如果说我现在的需求是我想统计一个比较大的一个周期的数据,比如说我要统计一个月的数据,或者什么统计一个季度的数据,那就想想吧,一个月的数据你应该有30个索引,那你一个季度的。
10:23
那你再乘呗。对吧,90个索引或者什么,甚至于什么差不多100个索引。那你在统计的时候100个索引,你就想想吧,你在统计的时候,这100个索引你怎么去写啊。啊,你去查色查一个索引,Search查一个索引,色查一个索引,你再把查到数据呢,手动再把它什么合并到一起啊。这个是很痛苦的吧。对吧,所以你想想啊,这个问题又应该怎么去解决,就是如果说我查一天的还好,我要查多个查多天的,或者什么查一个周期的数据。应该怎么查?
11:00
明白吧,啊,这两个问题有的同学可能想到了,有的同学呢,没有想到啊,我给你提一下,然后大家思考一下这两个问题应该怎么解决。好吧,然后这个呃,稍后啊,休息回来以后,我们去想想办法解决一下啊。
我来说两句