00:00
前面我们测试了创建一个映射,我们创建索引的时候呢,直接来指定好映射,并且呢,我们还可以给已存在的映射添加一些新的字段属性,但如果我们要修改已存在的映射,能不能改呢?来说一下,对于我们已存在的这个映射字段,我们是不能更新的,我们之前在这儿尝试再来更新,比如以前是有这么一个映射,我在这儿把这个请求再发一遍来更新,那这块呢就会来报错。说我们这个是已存在的,是不能被更新的,那想要在这添加字段倒是可以的,那有些同学说,那我能不能用这个进行更新的,比如我们employee ID原来呢是keyword,我现在给它变为了。走,我发现呢,这就又会报错,所以我们employee这个ID,它接收了一个不同的类型,所以我们想要用这种方法来给它做更新也是不可以的,还是转变为这个keyword,那我们如何来修改一个已存在的映射,比如我们来看一下my index的映射,我们来get my index-map们通过这个请求可以来查看映射走。
01:09
它里边的age是image email是keyword,包括employee ID keyword name是task,我们想要修改这个映射,怎么改呢?参照文档那一直往下翻,在这添加已存在的这个属性,我们之前测过了,在这儿还有一个叫更新我们这个映射,文档中说我们不能去来更新我们这个映射,如果我们这个属性的这个字段已经是存在的,这原因呢,就是因为我们如果修改一个已存在的这个字段的映射,那就把我们之前已经存在这里边的这个数据,我存了好多employee,我们改了employee的ID的这个映射了,那这存的这些数据,因为它的一些检索规则就跟以前不一样了,就失效了,所以呢,这是有问题的。如果我们真的要修改映射,文档中说,我们想要修改这个映射呢,我们要做的就是创建一个新的索引,用我们正确的映射规则,然后呢重新re应对,比如说重新保存一下我们的这些数据给我们这个新的索引。
02:09
里边也就是说想要修改映射,唯一能用的办法就是数据迁移,把我们原来旧索引里边的这些数据,我们现在创建一个新的索引,指定好正确的映射关系,把这些数据全部迁移过来,那正好我们说呢,新版本已经废弃了我们这个type类型,所以我们之前有一个旧数据,Get bank,我们银行里面的这些数据。来给它进行检索,里边呢有非常多的数据,有1000条,而它的这个映射呢,我们来看一下杠map,每一条数据呢,它的类型都是account,而新的版本呢,我们是不需要类型的,如果我们还想对它里边的某一些属性来做一个修改,比如我就把这个年龄改成一个配,那我们怎么做呢?他说要做的办法呢,必须是先来创建一个新的索引,再把数据迁移过去,好,那么就来创建一个新的索引,并且创建的时候呢,直接指指定好映射关系,来直接put一个,我们现在呢,就叫new bank,我们现在新的这个银行。
03:19
我们想要给它指定映射关系,那指定的映射关系我们就是用这一块来指定的put,好,我们像以前一样,Map有好多属性,我们把这些属性呢直接复制来,好,我把这些直接复制来,我们来改一下我们的映射关系。好,我直接把这一块复制过来,CTRLC放到我们这个properties里边,我们把它格式化一下走,现在呢,相当于我们创建了一个新的索引映射关系是这样的。那在映射的时候呢,Address我们要全文检索,所以呢,我们就不需要这个keyword了,我也不希希望在这来做精确了哈,我们来把它就可以删掉,A呢,我们可以给它改成配,包括CT呢,比如我们就拿它做一个keyword,也不做全文检索了,好我们把这一块映射呢,我们都改成比如我们自己想要的。
04:14
那email呢,也得是一个精确匹配,好我把这一块放过来,包括它的这个雇员信息,那还是一个keyword,我们把以前的这个我们都删掉,First name我们用来做全文检索,好我把这个也删掉,真的,那这直接呢,就是一个keyword,不需要全文检索,就MF2个值,Last name也可以来做全文检索。来拉萨内幕呢,我们也可以给它进行qord精确匹配,State呢,我们就给它变成qword,好我们现在相当于修改呢,我们自己的这个映射关系,但是呢,我们现在是创建了一个新的索引,好我先来运行,我们看到我们这个索引创建好了。那这个索引的映射,我们来看一下get我们这个new bank,我们想创建的这个新的索引的这个映射。
05:06
走这个映射呢,每一个都是我们指定的这个映射规则,那原来的老银行里边的数据是它的这个老规则,那我们想要把它改映射,那就是把老银行里边的数据转移到新银行里边,好,那么这个转移数据的迁移怎么做呢?那固定写法加post,我们发送post请求。杠,Re index,那这就是我们相当于发index,好,然后呢,我们要迁移数据,怎么迁移,接下来的语法就是source这块有一个index,把老索引里面的数据迁移到指定位置,但是我们这个老索引啊。他还分类型了,比如说我们查的这个数据。我们来看一下咱们这个bank里边,我们来对它进行一个查询,Bank里边的这个数据,这个数据啊还是有类型的。
06:03
Type是account的,所以我们要迁移过来呢,那相当于就要这么来写。这一块我给的下边的这个写法,上面这个呢,是6.0以后我们不用类型保存,那直接一个索引搬家到另外一个索引里边去,但如果以前老版本那都有了类型,一个索引下可能有很多类型,那想要搬家呢,那就用我们这种语法,还是我们re this,重新索引数据,然后呢,在S里边指定我们老索引哪个老类型的数据,然后呢,再指定目标索引。这就行了,包括我们这个写法呢,在官方文档里边也都有官方文档,这还提示了我们如果想要read in this,按照这个文档来做,在read in this API里边source是什么?目的地是什么?这都有,好,我们现在呢,就来重新签一下我们的数据,来写一个source source我们来指定index,原来的老索引叫bank,然后呢,包括它还有类型来指定type,我们迁移的是bank这个索引下account类型下的数据,那迁移到哪个位置呢?我们来写一个目标位置,目标位置呢索引在这,目标索引呢,我们创建了一个新的叫new bank,我们迁移到这,好,然后呢,我们来运行,我们看到我们这一块就运行成功了,花费了1590毫秒,把1000个数据呢都转移过来了,那我们来重新查询我们新的里面的数据。
07:38
My bank里边,诶我们不叫my bank,叫new bank里边的数据好search。来进行查询,那这个里边的数据呢,1000条没问题,但是呢,我们现在看到每一个数据呢,再也没有他的这个type叫account了,而所有的type默认都变成了杠dock,这就是我们说的修改索引和数据迁移,那以后呢,我们都是首先不用我们这个tap了,哎,我们以后呢不用type。
08:09
而且呢,老的数据可以迁移过来,那修改,所以呢,嗯,我们就这么修改。包括的话,我们一般都是在创建。索引的时候,我们直接给他。指定我们的映射关系,好,关于映射这一块,我们就简单的说了一下,主要呢,我们可以来自己自定义的来指定我们每一个属性都应该是什么样的数据类型,包括它是否要被全文检索等各种规则,所有详细的规则那都是要参照官方文档,有两块内容,那第一块是数据的这个类型,我们属性的数据类型,第二块主要再来参照我们参数里边的这些映射规则,都有哪些映射规则,比如我们之前看到了index来代表这个参数要不要被索引,包括如果日期,我们还可以来指定格式化规则等等等等,这就是我们说的映射。
我来说两句