00:00
好,前面呢我们安装好了a search,我呢以后就简称它为ES,而有些同学呢,还不知道ES的一些基本使用办法,那我们接下来呢,就来做一个快速入门,了解一下它的一些使用方法,包括一些基本概念,方便呢我们和后来整合,那么要学习ES最好的工具呢,就是我们这个官方文档,那可以在这来搜索search。ES的官网呢,就是第一个ELas.Co好,我们来点进来,这个官网呢,还做了国际化处理,这有简体中文档,点过来,我们要看中文文档呢,在了解这一块有一个DOSDOS的最下边。有一个简体中文好点进来呢,这就有一个ES的权威指南,简体中文版点进来来,我们从这呢就来开始和学习ES,等它这一块做完了以后呢,我们这儿就会刷出目录结构,那么前两章序言前言我就不看了,那基础任务入门来掌握一些核心概念,那么从第一章,哎,你知道为了搜索,我们在这一块呢,主要来说一些核心概念,安装这些我们已经安装完了,第一个叫面向文档来打开。
01:17
也就是说我们这个elastic search啊,它是一个面向文档的,也就是说它会存储整个对象或者文档,不像是我们MYSQL之间存储的是数据的一些行列,而存储了文档以后呢,Elastic search可以对这些文档进行索引、检索、排序、过滤等等等等,也就是说它是的这个数据类型是很丰富的,而且呢,在ES中,哎,我们是使用杰森作为文档的序列化格式的,也就是说比如我们一个user对象最终放在我们ES中,它会转化成杰森的格式来,类似于这个样子,杰森呢,大家都知道,它呢有天然的轻量级和跨平台的优势,那么呢,以后我们这一个阶层文档它就代表一个数据对象,好,接下来呢,我们再来看下一章适应新环境这一块呢,会来介绍ES的一些基本概念。
02:17
对ES的初次使用呢,它一些基本概念是比较难以理解的,不过呢,他在这举了一个例子,比如我们要创建一个固原目录,哎,也就说我们这个makegarop公司,它有一些员工信息,哎,我们这些员工信息呢,要经常进行一些检索啊,分析等等,我们要创建这么一些员工信息保存在ES中,那么通过这个例子呢,我们来看一下有什么相关的概念来点进来,这样呢,它叫索引雇员文档,其实就是说我们ES里边,我们要能进行数据检索,那给ES里边就得先存写数据,所以说呢,我们第一个需求就是要存储一些雇员数据,我们放在ES中,而我们这些员工数据呢,是以雇员文档,就是我们刚才看到那个节省文档的方式存储的,一个节省文档就代表一个雇员。而我们把给ES。
03:17
从存数据的这个行为,我们叫做索引,其实就是存储的意思而已,只不过呢,这个所以呢,它还有一些概念,我们来说你想要把一个信息存到ES中,也就是说我你要把它索引在ES里边之前,你需要确定我们的这个文档数据到底要存在ES的哪里,那么呢,我们就牵扯到一些概念,在ES集群里边可以有多个索引,你看啊,前面这个索引呢叫动词,后面这个索引呢又成名词形式了,然后呢,每一个所以呢,可以包含多个类型,每一个类型呢又包含多个文档,每一个文档又包含多个属性,哎,这段话什么意思呢?我给大家大概画了一个图,我们来看一下这个图,我们想给ES集群里边存储数据,比如有谷歌公。
04:17
司有Microsoft公司有我们刚才说的这个mega Co公司,我们要存储员工数据呢,我们首先确定我们这个员工是哪个公司的,哎,我呢可以存在这个节点里边,比如我们这个ES节点是ma公司的,好存在这儿,所以呢,我们把这些东西呢,我们叫索引,诶我们第一层我们叫索引给哪存,那么接下呢,我们这个公司呢,它有员工信息,也有它的一些产品,包括还有它的一些部门,你存的到底是哪些数据,那接下来第二级这个呢,我们称为类型,诶我接下来呢,要存的是员工信息,而员工信息呢,数据是什么?诶我们每一个数据文档,我这个阶层呢,我都放在这儿,我存了三个文档,所以呢,这三条数据每一个呢都叫一个文档,而这文档里边呢,自然就有它的属性,比如员工的ID,员工的名字,员工的age。这就是我们说。
05:17
的索引类型、文档、属性,其实呢,类比到MYSQL,这就非常简单了,什么叫索引呢?就相当于是我们MYSQL里边的数据库一样,诶,我们连上MYSQL,我们到底要给哪个数据库里边存东西好?我们MYSQL里边有很多数据库,而数据库里边呢又有非常多张表,我要是给employee张,Employee这张表里边存数据,还是要给department这张表里面存数据。类型呢,其实对应的就是MYSQL里边的表,那表里边呢,会有一行一行的记录来存储数据,这个记录呢就是我们说的文档,而表里边呢,列每一列呢都有它的这个字段,这个呢我们就称为属性,所以呢,这其实是跟马S的这类比关系是基本一样的,那么结合这些概念,我们来参照S文档来,我们给ES中存储一些员工数据。比如下边呢,这。
06:17
一个例子,我们想要保存一个员工数据,我们将要做这四步操作,哪四步操作呢?诶,每一个员工我们都保存一个文档,所谓的文档就是这个阶层数据,那么我们要保存文档呢,这个文档是employee类型,诶那么这个数据呢,它是一个员工类型的,而且呢,这个文档放在mega Co这个索引内,然后呢,我们要把它保存在ES中,那要做这个操作看起来然说看起来很多,我们呢,其实只需要发一个put请求,Put请求的UI地址呢,就是mega Co,前面第一位是索引的名字,哎,我们要把什么数据放在哪个位置,放在索引的位置,然后呢,第二个是我们数据的类型的名字,哎,我们呢是放在employee里边,然后呢,最后一个是我们数据的特定标识,哎,我的一号数据。
07:17
这个消息体就是我们请求的这个杰森文档,我们呢就来发送这个put请求,这put请求呢,我们就来结合啊post麦我来发送请求,这个post麦呢,我们也给大家发到了这个软件里边,大家安装就行了,好,我们呢给ES来发请求。把这个关掉好,首先呢,我们ES的地址是幺幺八点,我们把我们的这个地址复制来,118241699200,这是我们交互的地址。这个地址呢,我们接下来是要索引一个员工,我们把uri地址拿来,好我们把这个uri也加上,然后呢,它必须是一个put请求,Put请求呢需要带这个接森数据,这个数据呢是员工的文档,好我们在body里边这个Jason数据呢,我们选中这个啊role,然后呢,TXT我们选成application杰森,好这时我们要带的杰森数据,我们来发送这个请求,哎,注意这块put来发送。
08:28
诶,我们发现呢,这一块请求处理完了,这有响应,响应的内容,包括诶你这个数据呢,我放进了哪个索引里边,类型是什么,ID是什么,包括呢,这个数据的版本,这个数据呢,是刚才创建的,包括等等等等一些信息都在这儿,那这是我们一个数据,那我们来保存更多的数据,二号员工,我把这个二号员工的内容我来复制来CRV,好,那么这个employee我来变成二保存好,二号员工呢也进来,然后呢来三号员工。
09:04
来复制好三号员工,那这个ID呢,我们也改为三好来发送好,这个三号员工呢也保存,那么我们就给ES中存储了这么几个员工数据,有了这些数据呢,S就能帮我们分析和搜索这些数据了,好,我们继续呢往高级看检索文档,那我我们之前给里边存了一些数据,我想要检索出来,怎么办呢?哎,还是发请求,我要发一个get请求,我要在这个索引下边找employee,找什么呢?找一号employee,所以说呢,我们之前只需要把这个put请求我来变为get请求,然后呢,Get哪个员工来写,比如写个一走,哎,我发现呢,这一块有响应,响应出来呢,索引类型ID,包括他找到的这个数据放到处,诶已经找到了source就是找到的数据,这个数据呢,有员工的first name last。
10:04
Name age,还有这个员工的about interests等等等等,这些数据呢,我们就算是检索到了,那二号三号那等等在这发get请求都能送到,同样如果说你把这个get变为delete,这个呢就是删除,而且get如果变为he请求,这是来检查是不是有这个员工我来发送he。好,我们发现呢,这一块没有响应体数据,哎,这是he请求呢,不存在响应体,大家注意,如果有员工的情况下,三号员工我们有这一块响应状态码是200,而如果没有呢,比如我来四号员工走,哎,我发现呢,响应状态码是404 not found,所以呢,这是rest风格,我们只要响应404就说明这个资源没有,好,这是我们head能检查有没有员工,包括呢,Delete还能删,比如我发delete请求。
11:04
我要他删三号员工,我点一个send,那么呢,他写一个found,等于处已经找到了,而且呢,最终的效果是把它给delete删掉,删掉我再来发get请求,能不能有三号呢?我点一个send,哎,我发现呢,放到false就找不到三号了,也就是说哎,我们文档这说我们这个get呢是用来检索文档,Delete呢可以来删除文档,He呢可以来检查文档是否存在啊,如果我们想要更新,我们再用put命令新增和修改文档,也就是说我们只需要使用rest风格的这API来操作就行了,特别是呢,我们这个更新,比如呢,我们还是之前的这个一号员工为例,我们在保存一号员工的时候呢,我们之前已经保存过一次了,我再来保存一次,比如我把这个25,我要改成27,好,我点一个send,等我再来保存的时候呢,来发现它下边诶。
12:05
我室版本呢会给上叠加,而且呢result是update,我们第一次添加它是created,而我们以后呢还是一号用户,他每次呢就版本增加,比如呢,我再来给他改回25,那么版本呢又会增加一次,这就是呢,我们使用rest风格,也就是只需要改变我们这些请求方式来对ES中的文档数据进行基本的增删改查,我们继续来测试更多的搜索功能,我们来点进轻量搜索里边,好这块呢说如果我们想要搜索所有的员工,以前呢我们在这个位置来写文档的ID,现在呢我们只需要变成杠search就行了,好,我们来试一下查三号员工的,好我就变成杠search,我们来查所有我点一个send,好,我们看到呢这一块hit,诶找到了TOTAL2个,然后呢,所有数据呢,都在这个his里边,然后我们来看。
13:05
有index,有数据的索引类型以及ID,哎,我们找到了二号员工,我们接下来再来往下看,哎,这还有ID,唯一的一号员工两个,一个叫JA Smith,一个叫John Smith,哎,两个呢,我们都找到了,没问题,这是找所有包括呢,我们想要按照某些条件我来往下翻,比如呢,我想要找last name是史密斯的,好,我们只需要带上这个参数。Q,等于last name等于什么好这个呢,我们称为查询字符串,好查询字符串里边呢,是我们这个字段冒号值,我们就按照这个字段来找,我们来找找呢,我们同样也找到了两个,哎,我们这两个呢,他们的last name都叫Smith,只不过呢,一个叫占,一个叫JO,而我们这两个呢,有相关性得分,哎,他俩都是一样的,我们就得到了这条清分,我们可以来看更多的搜索查询,比如呢,我们搜索的时候不写那个查询字符串,我们使用查询的表达式点过来,所以查询表达式呢,就是给ES来提交一串杰森表达式,这个杰森里边呢,指定我们查询规则啊好,我们呢就把这串接森我来复制过来,这个接省语法呢,大概看一下我们就是查询,查询呢,按照一个匹配规则,什么匹配规则呢?就是last name。
14:34
诶,Smith的,但更多的语法规则呢,我们后来大家可以结合文档慢慢来学习,我呢就把它复制来,但是呢,这块事例虽然是发get请求啊,我们说这个东西它是放在请求体中的,Get没有请求体,所以我们在测试的时候呢,能发post就行了,好发post我们查询呢,还是不用写查询字符串,我们来写上一些数据,咱给body里边写上我们这些查询规则,好,我呢找last name是Smith send能看到呢,跟之前的效果是一样的,偷偷找到了两个,没问题,这个杰森形式的查询表达式是非常重要的,哎,比如呢,我们再来看一个,它这有一个更复杂的查询事例,只要我们把这个查表达式写的复杂,那它就会做出更复杂的工作,我们来换上它新的这个产品表达式,这个表达式呢,来大概来看一下,它呢也是要查询来匹配拉。
15:34
Name是史密斯的,还有咱们这个filter要过滤,我们这个按照什么过滤呢?按照我们这个区间年龄的这个区间是GT大于我们30岁以上来过滤的,所以呢,我们写了一个复杂的查询规则,我来send,这个查询呢,我们发现TOTAL1它呢查到了一个,这一个呢就叫JA密,它年龄32,所以说呢,我们在这儿来定义复杂的查询表达式,那么继续来体会其他强大的检索功能,比如我们往下,哎,我们来找全文检索,这个全文检索呢,我来换上一个表达式,我来复制过来。
16:14
好把这个表达式呢,我们来删掉,那们现在呢来查查跟什么查呢?们根据每一个员工的about字段里边来查查它是不是有rock climbing,好我们来点一个send,然后呢,我们发现他查到了两个结果,也就是说我们当时存员工的时候呢,都有这个字段,我们来看一下查查的结果,结果呢都在这个source里边,先是一号员工,一号员工呢,他的这个about就叫rock climb,好是我们这个值,而且它的相关性得分,这有个score相关性得分比较高,叫0.53多,我们再来往下看。他呢还查到了二号员工,只不过呢,二号员工他有rock单词,没有这个climbing单词,所以呢相关性得分比较低,叫0.285这么多,这是我们这个进行全文检索,只要我们这个字段包含我们要检索的字段,它都能我们来列举出来,我们来继续往下看。
17:15
还有短语组索,我们刚才看到这个全文检索的情况下,哎,也就是说我们要检索的这两个字段,你有任何一个都行,但是往往有时候我们要讲,我们就想让它完全匹配,看谁完全有它,我们把它当成一个完整的单词,而不是像我们说的这个,他把这两个单词分词了,分成两个词,那我们要当成完整的单词呢?我们在这来进行来搜索,我们只需要把这个改成慢吃。哎,它好,我们来改成它,改成它以后呢,我们来点一个send,这次呢,它就会只来查出一个结果,它要完整匹配,把rock climb比当成一个单词,那只能查出一条记录,这就是我们说的短语搜索,把它当成一个完整的短语,还有它下边的高亮搜索,比如我们呢,还是按照完全匹配的方式找look climbing,然后呢,我们要高亮的字段在这指定,我们要about,把这个about字段呢在这给我们高亮出来,好,来复制一下,这是新的查询表达式,来粘贴过来,好,我点一个send,我们发现呢,它这一块查出了一条记录,而且呢,我们来看往下这条记录给我们返回的时候呢,S里边是这个员工数据没问题,但是呢,他把高亮的字段在这里也显示出来了,要高亮的两个单词他用htm me标签给加了起来。我们可以通过发。
18:46
请求得到这个数据以后呢,把这个显示在HTML页面上,它呢也就能高亮,好,这就是我们在这演示的几个高级的检索功能,但是大家也发现了,其实就是在玩这个查询表达式,那么大家后来呢,慢慢来结合文档学习这些查询表达式怎么写在深入搜索里边,再来看我们详细的搜索内容,我们呢就先给大家一个快速入门,大家呢可以后续来参照文档,包括呢也可以时刻关注我们上硅谷相关系列的课程。
我来说两句