00:01
好,呃,下面我们讲一讲这个过滤的操作啊。呃,那这个过滤的话有很多,有什么只等判断有什么范围过滤,有什么符合查询对吧,还有什么过滤删除,过滤修改什么的啊来我们一起来看一看。OK,呃,那首先的话还是给大家去明确一个点啊,就是刚刚我们说过的啊,就是在这个ES存储字符串的时候呢,它默认都会保留两种方式存储,一种是叫这个text类型,它是什么做倒排的,让你用分词做匹配的,一种是这个keyword类型。它是标准的列式存储,那么这种类型我们一般就用于什么,用于过滤、分组、聚合、排序。对吧,当然你在写的时候需要需要什么加上这个keyword。好吧,需要加什么字段的这个keyword啊,那如果说我就只存了一个keyword,那你就什么不用去加了,就字段,你比如说我在写的时候啊,像这个。它是又有什么text,又有什么keyword,那我叫什么需要加keyword来表示我要什么通过你的倒排啊,这错了啊,通过你什么列式存储做什么做这个直等直等的判断啊,只等就是必须要完全相等对吧?那如果说我这个字段呢,我就存了一个什么keyord,那我在写的时候就不用写它了。
01:07
理解吧,你两种的情况下,你就要去写这个keyword OK吧,行好来,那这个我们刚刚就已经说过了啊,就不再强调了,接下来我们就看啊,比如说我要条件过滤名字等于什么呀,名字等于operation。明白吧,而且我要做什么做直等判断来,拿过来看看怎么写啊。好条件过滤过滤谁呀。稍微大一点啊,过滤这个名字等于什么operation,而且我做的是直等判断,啥叫直等判断呢?就是你必须得跟它一模一样才行。必须得跟他一模一样。那怎么写啊?啊,你要简单写的话,就是get还是什么呀,这个moving index,然后呢,这个我看看啊,下划线search,那按照我们刚刚讲的,你可以怎么写啊,我是不是还可以做一个match啊,对吧,比如说query,我做一个什么match,这是一个什么分词匹配,但是你在这个分词匹配的时候呢,呃,我们想做到这个直转判断,那你可以写什么,写这个name的keyword,对吧,然后把它写过来。
02:17
你可以这么去写。对不对,查一下是不是只有一条数据啊。对吧,但这个是按照你的分值匹配的啊,但现在我们是希望是做什么,做这个条件的这个过滤。那就不再是做你的这个分词了,条件的过滤,那怎么写呢?我们可以换一种方式来写啊,就是加条件啊,这个加条件的话也是啊,我们需要有这个query,然后呢,过滤的话,我们都是用这个feature。OK吧,过滤都是filter啊,但是呢,呃,它这个语法就比较恶心啊,你需要慢慢去去记去理解它啊这个filter。我们将来可能会写很多fair,或者说呢,我们在写这个so的时候呢,我们可以写很多个条件,那这个条件之间的话呢,我们可能会有什么呀,会有这个and的关系,可能会有什么all的关系。
03:01
对吧,那它怎么去体现这个多个这个条件呢?我们需要什么加上这个布尔。啊,把它套到这个布纹里面啊,这个没办法,它的固定语法就这样,你只能去记啊,同学们来,所以说我们这个写一下啊。怎么写呀,就是get movie index,然后呢,下环节设置对吧,然后后面怎么写呢?就是query,只要你是做过滤的啊,只要你是做过滤的,你就记住进来以后呢,Query query里面就直接什么呀。写布尔,布尔里面写就可以了。对吧,只要你加过滤,你就写布尔。好吧,那你这个filter里面写什么东西啊,就得看你要做什么过滤了,比如说我们有直等判断,有直等过滤,有什么范围过滤,对吧?如果你是直等过滤,那我们用的是term term表示的是直等。OK吧,直等啊行,那这地方写什么呢?你要按照谁去做直等判断,那我们按照的是name去做直等判断,但是因为我们的name呢,现在目前是存了两种方式的,那我就必须得告诉他,我用的是只等判断,那你就不能做分词对不对,首先它写的是NAME2KEYWOR。
04:03
理解吧,后面再去写什么,再去写你的operation,这就可以了。这样就可以来走一下,也是一条数据。对吧,当然哈,如果说你就这么去查的话呢,你通过上面这种方式呢,也可以实现这个效果。啊,只不过它的原它的这个呃理这个这个原理是不一样的啊,这个是做的分词,只不过呢,我是告诉你了啊,你在做匹配的时候呢,你用的是我的keyword,就是不要再去做分词了。对吧,那这个的话呢,就是直接告诉你我用的就是什么特直等判断,当然你在直等判断的时候呢,你就告诉我你要用什么直等判断,如果说你单独写个name的话呢,它还是给你做分子的啊,我们要什么指定下name的keyword,这样才什么告诉他不要做分子了。OK吧啊,这也是要知道的啊,行来再来写两个,你就感受一下啊,比方说我们要做什么呀,分子匹配red c条件过滤谁谁谁,这还比较麻烦是吧。
05:04
好看一下吧,分子匹配red c条件过滤呢,是过滤这个东西,诶那你说这个怎么写呀。啊,又有分次匹配,又有条件过滤。对吧,来看一下这个要这么去写了啊。你的query中条件你看啊,分次匹配,这也是一个条件,然后呢,你的过滤呢,也是一个条件,所以说呢,我们要把它整体就套到我们这个布尔中啊,你要知道这个布尔是干嘛,它是支持你去写什么,写很多条件的啊,OK,来写一下吧,比如说我们先把这个条件过滤写出来,这个很好写啊,就是还是get叫这个movie index。呃,提示一下啊,然后呢,下方下这个search,好,Search后面我们就开始写了啊,首先你既然要怎么做这个。查询了对吧,做条件了,那就直接query上来就carry好query里面的话写什么呀,不玩。好部里面写什么了,比如说你的条件过滤,那肯定就是一个feature feature里面写什么呢?
06:07
你这个是演员列表等于张涵宇的,那这一定是一个执掌判断对不对,说是进来以后就什么直接term直转判断来写什么呀,就是你的演员列表叫act name的keyword啊,一定要keyword啊,因为它也是存两种的啊,叫张涵宇把它拿过来放到这。行,这样的话注意了啊,我们是能够拿到两条数据的,一个是你看啊张涵宇一个是什么呀,张涵宇这个都有了吧。对吧,这都是有的啊,然后呢,他接下来说这个分词匹配啥来着,分词匹配这个red c是吧?OK,那你如果要分词匹配red c的话,怎么写呢?注意啊,在你的布尔里面跟他平级的,注意啊,跟它平级的,然后你再去写写什么呀。这个地方就有讲究了啊,它可以写must,它可以写瘦啊,那我们先写must吧,好吧,写完must以后我给你解释啊,这个里面写什么呢?就写你的match,就是你要去匹配什么东西。
07:01
啊,匹配什么东西来,那我要匹配的是我的name,既然你做分词的匹配,那就直接写name,后面写什么,写right对吧,这样就写好了,好那么这个写好以后大家注意哈,它是分次匹配red c,然后呢,再做条件的过滤,这两个肯定是一个and的关系了啊,那你看看啊。我分子匹配的话呢,我是能够匹配到什么呀,匹配到这个呃叫operation,它是能够匹配到的吧,那这个东西你是匹配不到的吧。叫operation匹配不到,但是我的分词匹配到,还能匹配到一个什么呀,还能匹配到一个,嗯。就是那个叫。第三道数据对吧。呃,第三条数据来,我再查一下整理数据啊,把这个事给你说明白啊,Get moving index,然后呢,下下search。走一下你看了啊,这个right c的话,你看它能够匹配就说白了啊,这个条件是能匹配到你的一号文档,还有什么呀,还有你的这个。
08:01
三号文档就是一号和三号我是能够匹配到的,对不对,但是我的条件过滤,我能过滤的出来是什么,过滤出来是你的一号和二号文档。能不能听明白,那么这样一综合一一综合的话呢,应该是什么呀。应该是一号文档。是不是来看一下啊,走一下好。只有一个结果,这个结果中你看一下是不是就是一号文档啊,首先包含张涵宇的有吧。对不对,再一个呢,Right c没问题吧。能不能看明白啊,这是没问题的啊,好了,那么这是我们用了这个must。那么其实我们还会以用一个瘦的啊,我把它改一下。叫瘦啊,这个就不一样了啊,同学们,按照我们刚刚分析,这个是能够匹配到一号和二号,这个是一号和三号,那你综合考虑应该就是一号文档,但其实如果你要用should的的情况下啊。它的结果是一号和二号。看一下两条数据啊,是一号和二号,OK,这是个啥意思啊,给大家去说一下,其实我们的这个must和这个瘦啊,它是什么呀,它是建立到你的这个filter的这个基础之上的。
09:13
理解吧,就他是必须要满足的啊,他是必须要满足的,就是来说一下啊。写到这,Filter是必须要满足啊,必须满足OK吧,但是我们的must和这个瘦的。啊,它是有区别的,如果你是must,它也是必须满足对吧,如果你是瘦的,它就什么呀,它就可以就是,呃,这个不是必须满足啊,不是必须满足好,那区别就在这啊,你看啊,如果说我用的是must,那我要求我就要求你的过滤完的这个数据里面,必须得能够跟我的分子做匹配的才能够出来,所以说你看啊,这个结果就是一条。对吧,结果就是一条。能理解吧,就是只有你看啊,张涵宇是包含了对不对,张涵宇是包含的,然后呢,Red c red c,我是可以怎么做这个分词匹配的,这个结果才能出来,但如果我要用了这个受的以后呢,它这样子的看好了同学们。
10:11
我的张涵予,张涵宇这两条数据我是什么,按照条件过滤,我是能够匹配上,就是我的一号文档和二号文档,但是你看一下我的分次匹配的red c啊,它是能够满足我的,但是呢,下面这个是满足不了我的,它根本就没有什么red c,但是它也出来了。这个是啥意思啊,给大家去解释一下这个should的含义,就是如果说啊,听好了,你filter过滤出来的数据。我再用我的这个数的呢,去做一个分子匹配,如果说能够匹配成功。那我会把结果给你啊,显示出来,并。打分,所以你看一下啊,我张涵宇能够匹配上,并且呢,我能匹配上red c,那我最后的这套数据是有打分的,是有分数的。
11:00
听懂了吧?那么如果说我的filter能够匹配上,但是我的分词匹配不上。这种情况下我结果中也会展示,因为你的filter是匹配上的,我也会展示,但是呢,注意我是不给你打分的,看这个第二条数据。张涵予,能够匹配的上,但是呢,Red c它匹配不上,这叫结果呢,因为你用的是受的,那我的结果也就出来了,出来以后呢,但是你看一下,它是没有分数的,他不打分。明白了吧,它是不打分的啊,所以这个结论你要知道一下啊,来写一下吧。这个must是必须满足啊,就是呃,这个满足啊,满足后会,满足后才才会进入到结果啊,进入到结果地明白了吧,这个是什么呀,不是必须满足啊,就是如果能满足啊会打分啊,如果不满足不会打分啊,但都会。
12:04
出现到结果中对吧,就说白了啊,他们两个是基于什么,基于这个filter啊,如果是你有了这个filter以后呢,那你就看一下你用的是must还是用的是这个should。听懂了吧,哎,这个会比较比较这个麻烦一点啊,但其实也不难啊,就是大家这个第一次接触啊,可能这个不太好理解啊,就等你这个接触的多了以后,慢慢的也就好了。好吧,他这个DSL就这样,没办法专用语言嘛,人家就是这么设计的,你就得这么去用。OK吧,啊,来,这是我们的。呃,叫这个符合查询啊,符合查询你看这里面就有一个数的啊,这里面有解释啊,就是你的must和这个数的啊,到底怎么去用。好吧,行,那我们再来说一个这个范围过滤吧,啊范围过滤啊,这个跟那个差不多啊。都是过滤啊,范围过滤,呃,那么它的要求是这样子的啊呃,写到这儿。
13:00
好,查询这个豆瓣评分呢,大于等于七,小于等于八的数据,那你看啊,我们的豆瓣评分,来我们先查所有的数据啊。Movie index,然后呢,下环节search啊,你先下卓伟的啊,找一下你看看啊,这个第一条数据的是08:05啊,这个小A等于吧,不满足吧,然后第二个是8.0,诶这个是满足的,这个是5.0 5.0也不满足,那最后的结果应该就是应该就这一个,呃,一个不太好啊,两个吧,大于等于大于等于五好吧。大于等于五,然后呢,小于等于八,这样的话,你看这个能出来,然后这个是不是也能够出来呀。是不是8.5的就出不来了啊好,那这个怎么写啊,Get movie index,然后呢,Search,只要你是查,你就直接写search就完事了啊好,这里面query。好,Query里面我们还是要去写写什么,写这个布尔,然后呢,再去写这个filter,这个filter里面大家注意哈,刚刚我们用的是直等判断,那我用的是什么term term叫什么直等判断,如果呢,现在我们做的是范围的过滤,那你用的是range。
14:07
能看到吧,论证里面注意啊,这个地方写什么呢?就一般大写的地方都是需要我们自己去改的啊,自己去指定字段的,那我按照谁去匹配啊,是不是按照豆瓣评分啊,说写个什么豆瓣扣。好,这个GTE叫大于等于LTE叫小于等于。对吧,当然如果说你不想有等于那什么GT。能理解吧,啊这些也可以啊来,那大于等于我们是五是不是那写个五,小于等于八,那我写个八。好,来看这个结果走。两张数据吧。这个是8.0的,5.0的。都出来了吧?对吧,这是一个范围过滤。好吧,啊,范围过滤啊行,那我们过滤的话呢,不就是这个直等还有什么范围。对吧?啊,那大家想着说,诶,那我们这个so中的话,除了什么大于小于,什么大于等于小于等于啊,还有什么等于,那我还有什么,还有什么like,什么模糊的东西,那我告诉你这个like这个东西我们是不是通过match去做的呀。
15:09
我们的match,我们的分词匹配,比你这个like做的好多了。对吧?啊说这个基本上都是能够实现的啊,OK,行啊,这是我们的呃,过滤啊,然后过滤的这个查询,这都是查询啊,然后后面是这个修改和删除啊,这个我们稍后再来说啊。
我来说两句