00:00
接下来给大家讲一下数据搜索功能,那为了方便演示呢,我们事先准备一些数据,首先我们先把索引创建出来。好了,点击箭头索引增加完成,我们接下来呢,我们来添加数据,我们这里添加数据呢,我们采用批量添加。数据呢,事先已经给大家准备好了,咱们可以简单看一看,我们这里的数据呢,我们的组件标识呢,都是1001100203040506,我们总共有六条数据,那么我们的六条数据呢,其实模拟的是用户的信息,比方说他的名称啊,他的年龄我们这里都是有的,那么他的年龄啊,30 40 50 30 40 50,这个比较简单,我们的名称稍微特殊一些,我们张三,李四,王五,但是我们有三条数据呢,是把张三的这个名称中间加了个空格,它分成了两个我们的名称,而这个是完整的名称,稍微的有点不同啊,好,我们来拷贝。
01:03
拷贝到这里之后,我们点击箭头,那么现在增加成功,增加成功以后,我们现在就可以开始查询数据,查询数据的最基本指令就是get。索引名称斜杠下划线,Search,然后呢,我们点击箭头,这个查询呢,会把当前索引当中所有的数据全部查询出来,那如果我想加条件怎么办?想加条件的话,加上一个我们的划括号,然后里面写上一个query,这个query就是条件的意思,那么其中有一个叫ma or,这个ma or呢就是匹配所有的数据,所有的条件,所以我们点击箭头,它照样会把所有的数据全部查询出来,但是如果你想要有条件的这种查询的话,我们就需要改成另外一个,那么我们这里呢,改成叫ma。我们这里改成match。它会提示你这里写我们的匹配的字段名称,我们这里呢,就叫name就可以了,所以我们这里写上一个name,那这个地方我们写上我们匹配的内容,我们写上一个张三。
02:06
OK,我们写完之后,我们点击箭头,这样的话,我们的张三数据就会查询出来,但是其实啊,有一个问题,我们这里的ma呢,其实啊,它是匹配分值效果,所谓的分值查询呢,是我们的ES,它会将我们的数据分值保存。那么这个分词呢,就是我们的关键词。举例子,比方说我们之前给大家准备的数据,我们这个名称当中有一个叫张三,因为你用空格隔开,他认为是两个关键字,两个关键词,所以呢,我们在这个地方保存的过程当中,它其实会保存成什么呢?我们的这两个。一个是他还有一个是我们的他对呀,他会这他会认为这是两个关键词,而我们这里的ma呢,会认为呢,我们去匹配关键词叫张三的,所以这个其实是匹配不上的,但是我们刚才准备的数据,这个地方有一个叫张三,这个我们的ES软件会认为它是一个关键词,所以我们现在匹配就是成功的。
03:07
那好了,为了给大家说明这一点,我们把它改成我们叫做它,那这样的话,你会发现这个其实是满足条件的,但是我刚才的这个数据其实就不满足条件了,那好了,那我现在呢,我点一下点击之后咱们看一看,我们点击它。你会发现我们的它就出来了,而且我们这个关键词还不是说可以只写一个,我们这里可以再加一个比方说理,那这样的话,我们的张和理呢,我们去点击它,你会发现他们都能查询出来,为什么?因为这个是分池,这个是分值,所以呢,我们任何一个分值效果呢,都能够匹配成功,所以啊,它是一个分值匹配查询,这个咱们稍微注意一下,诶老师,那如果我不希望是分池效果,我就希望我查询一个张三行不行?所以我们点击它,点击之后,你会发现我们这么写了以后,它的含义是说我们的这个词和这个词都能够查询出来,但是我就想是张三行不行呢,我们说也行,但如果也行的话,咱们就得换一个了,所以呢,我们来换过来。
04:11
放过来我们这里呢,就不用这个match了,我们换另外一个,我们换另外一个,我们叫做哎,用这个叫turn,用它的话,它就表示对我们的完整的关键词做匹配,所以我们这里写上一个我们的name,然后这里我们写上我们的张,然后你再写个三,哎写个空格三,那这样的话,他会认为这个呢是一个完整的关键词,那现在我去查询,点击箭头。点击箭头你会发现我们并没有任何的结果,诶不对呀,老师,你刚才不是说了吗?我们这个地方是有张三的,那我现在我们不就查询这个张三,你不说了,把它当成一个整体吗?没错,我们现在是把查询的这个内容当成整体,但是我们依然是在存储数据的时候,它是用分值的,也就意味着我们刚才的张三其实在存储的时候它是分开的,你这里用完整的去查,他肯定查不到,所以呢,我们这里这么查是可以的,为什么?因为它是一个完整的单词,对不对?我们点击箭头你会发现这时候它能出来,但是我们加个空格的话,它就认为这是一个完整的,是你保存数据的时候并没有按照关键词去保存,所以从这个角度来讲,它匹配不上。
05:23
所以啊,我们的这个ma呢,它是我们会做分词效果,而这里不会做分值,这是我们的一个区别啊,好了,那么我们接着再往下来看,我们刚才给大家讲了一下我们的这种分值的效果以后,我们接下来对我们的一些查询结果的字段呢,我们进行一些限制,为什么呢?因为我们有的时候啊,咱们的这个数据啊,它的字段太多了,看的会有点乱,对吗?所以我们接下来呢,准备对它做一些限制,所以我们接着来。对查询结果的字段啊,它进行限制,那么这个限制呢,我们就把它原封不动的拷贝过来。
06:02
我们写上下划线啊,我们写个下划线,下划线source,这个source呢,说的就是我们的当前的这个数据结果,那我现在呢,只保留我的诶name和我的H就可以了,所以呢,我们在这里只保留我们的name,还有我们的H,那么我们点击查询,查询以后你会发现我们的结果当中根本就不会再有ID存在了,对吧?哎,这就是一种限制在里面啊,这个其实比较简单,咱们只要明白了就可以了。好了,那接下来我们再组合多个条件吧,来,我们继续把这个咱们去掉,去掉以后我们组合啊,咱们组合多个条件。多个条件的话,这种感觉有点像什么呢?叫做or的感觉,就是这个也行,那个也行,对吧,那这个我们该怎么做呢?首先我们的get,然后呢,我们的这个它还有我们下划线,我们的search记录,基本的查询都是用search,然后加条件就完事了,这个条件呢,我们加上个query,哦,写上一个布尔类型的,对吧,这个布尔类型呢,就是我们有一个它,诶我们的数的就是可能是这个,也可能是这个,那好了,在这个里面我们就多写几个,记住我们可以多写几个条件,那比方说我们就给它写上来。
07:12
嗯,我们这里就写上我们叫做什么呢?我们的ma,我们匹配什么呀,匹配我们的名称当中,如果有这个章的,诶,我们写个他好了,写完了以后,那光有这一个条件不行啊,我想组合条件呢,所以我再来一个我们的match,这个match呢,我写上一个age,这age呢,我给他一个30啊。我这么写其实就表示的是,如果我们的名称中有这个关键字,或者呢,如果我们的年龄是30,我们都可以,哎,我改一个吧,我改成40吧,好了,那现在我执行一下。睡醒以后你会发现我们的这个章啊,他们都出来了,但是呢,我们的年龄是事实的,其实也都出来了,所以这个就是一个组合功能啊,咱们之前在早期的视频中其实是讲过这样的概念的啊,诶那么我们现在查询之后,我想去做一些排序行不行呢?其实也是可以的啊,所以我们继续我们写上它,我们叫排序后查询。
08:10
那这个排序后查询我们也是一样的啊,我们写上它,诶索引,再加上search,那接下来写上一个query,这个query是用来做匹配查询的,所以我们做match,然后呢,给他一个name啊,给他一个name,好跟name之后我们写上一个我们的他,哎,我再写个李,这样的话,我的张三李四都可以被查询出来,所以我们执行,但是我执行之后你会发现它默认的会按照我们当前的顺序号,也就是说我们的插入顺序。可是呢,我希望按照年龄的方式排序行不行?比方说我希望年龄大的在前面,那么这个时候就需要在我们的query的后面加上一个逗号,再写上一个放过来啊,我们写上它,我们就叫short,叫排序,这个排序当中我就想对年龄进行排序,而这个排序我恰恰就希望是上去对吧?那好了,我们再点箭头,箭头之后大家可以看到我们的40就跑到了前面,我们的30就跑到了后面,对不对?诶,所以啊,这样的话就把数据进行了排序处理,我相信呢,这个还是好明白的,对吧。
09:14
好了,接下来我们再给大家演示一个分页查询吧,OK,我们写上分页啊。分页查询,那么分页查询呢,其实这个比较简单,因为我们很多的数据库都有这种概念,对吧,那么我们这里也有这个概念,我们就要get我们的索引名称,我们叫search,然后呢,我们写上一个query,好,我这里呢就简单点全查。我全查一遍,我全查以后,它的后面可以加一些我们的条件,咱们叫from,这个from就是从哪开始嘛,我们从零开始就第一条。然后呢,我们有一个size,它表示什么含义呢?就是我们有什么,哎,每页多少条。我们的size呢,就表示每页多少条的意思啊,所以我这里改成了二,好,我们点一下记住啊同学们,我们总共是六条数据,我点击箭头,点击箭头以后幺零零幺幺零零二两条数据,那如果你改成二改成四呢,哎,记住同学们,这个你可不要误会老师,这是不是第二页的数据,不是,因为我们从第二从我们的零一第三条开始,每页显示四条。
10:20
所以啊,我们其实我们应该如果是分页查询的话,我们的from是变的,我们的set其实是不变的,所以啊,我们还得改回去二啊,我们点击箭头,点击以后1003 1004,你再改成我们的四,然后再去点,那么就是1005 1006,好了,这个呢,就是我们的分页查询,其实分页查询你会发现它是有规律的,为什么size是不变的,我们的from是有一个计算的小规则的这个from呀。他们的from,其实它应该等于什么?因为你当前的页码,比方说我们当前第一页,那么第一页应该减去一乘以我们的S,对不对?比方说你第一页,那么一减一是零,所以它应该写上零,那么好,就是我们的第一页,对吧?
11:06
但是呢,如果你想是第二页的话,那么二减一应该是一,一再乘以我们的S2,那么它应该写个二,这就是我们的第二页对不对,以此类推,那么下一个就是第三页,三减上一再乘以S,那不应该是我们的四吗?所以说这样的话,第三页不就出来了吗?对不对?哎,所以我们说它是有规律的啊好了,我们的这个分页查询咱们就说完了,那咱们这个查询操作就给大家讲到这里。
我来说两句