Elasticsearch基础1

一:Elasticsearch(搜索引擎)
1.概念:
①:综合搜索网站:百度、谷歌等
②:电商网站:京东、淘宝的商品搜索
这些搜索业务有一些可以使用数据库来完成,有一些却不行。因此我们今天会学习一种新的搜索方案,解决海量数据、复杂业务的搜索。
2.倒排索引:
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)
①:传统查找流程
例如,数据库中有下面的数据:现在,假设用户要搜索 “谷歌创始人跳槽” ,来看看倒排索引的传统查找在
检索时的区别:
在这里插入图片描述
因为复杂搜索往往是模糊的查找,因此数据库索引基本都会失效,只能逐条数据判断。基本流程如下:
1)用户搜索数据,条件是title符合 “谷歌创始人跳槽” 2)逐行获取数据,比如id为10的数据
3)判断数据中的title是否符合用户搜索条件
4)如果符合则放入结果集,不符合则丢弃。回到步骤1
如图:
在这里插入图片描述
如果有5条数据,则需要遍历并判断5次。如果有100万数据,则需要循环遍历和判断100万次。线性查找和判断,效率极差,一个10mb的硬盘文件,遍历一遍需要3秒。
②:倒排索引流程
在这里插入图片描述
词条列表(Term Dictionary):
然后,对文档中的数据按照算法做分词,得到一个个的词条,记录词条和词条出现的文档的编号、位置、频率信息,如图:
在这里插入图片描述
然后给词条创建索引,这样根据词条匹配和检索的速度就非常快。
倒排索引的检索流程如下:
1)用户输入条件 “谷歌创始人跳槽” 进行搜索。
2)对用户输入内容分词,得到词条: 谷歌 、 创始人 、 跳槽 。 3)拿着词条到词条列表中查找,可以得到包含词条的文档编号:0、1、 2、3、4。 4)拿着词条的编号到文档列表中查找具体文档。
如图:
在这里插入图片描述
虽然搜索会在两张表进行,但是每次都是根据索引查找,因此速度比传统搜索时的全表扫描速度要快的多。
3.安装和配置(linux)
在这里插入图片描述
在这里插入图片描述
4.启动
在这里插入图片描述
5.浏览器访问即可(ip+port)
6.es特点:
①:速度快
②:扩展性高
③:强大的查询和分析
④:操作简单
7.es主要用于做什么:
①:往数据库增数据
②:从数据库查数据

二:kibana(window)
1.概念:Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。而且还提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法。
2.相当于Elasticsearch服务器的客户端(图形化界面)
在这里插入图片描述
在这里插入图片描述

三:ik分词器(linux)
1.标准分词器并不能很好处理中文,一般我们会用第三方的分词器,例如:IK分词器。
2.安装ik分词器
3.解压到Elasticsearch目录的plugins目录中,并重命名为ik:
4.然后重启elasticsearch:
在这里插入图片描述
四:.Rest的API:
操作MySQL,主要是database操作、表操作、数据操作,对应在elasticsearch中,分别是对索引库操作、类型映射操作、文档数据的操作:按照Rest风格,增删改查分别使用:POST、DELETE、PUT、GET等请求方式,路径一般是资源名称。因此索引库操作的语法类似。
①:索引库操作
在这里插入图片描述

②:类型映射操作
在这里插入图片描述

在这里插入图片描述

③:文档操作
在这里插入图片描述
五:动态模板
1.基本语法:
默认映射规则不一定符合我们的需求,我们可以按照自己的方式来定义默认规则。这就需要用到动态模板了。
2.动态模板的语法:
在这里插入图片描述
3.模板名称,随便起匹配条件,凡是符合条件的未定义字段,都会按照这个mapping中的规则来映射,匹配规则包括:match_mapping_type :按照数据类型匹配,如:string匹配字符串类型,long匹配整型match 和 unmatch :按照名称通配符匹配,如: t_* 匹配名称以t开头的字段映射规则,匹配成功后的映射规则凡是映射规则中未定义,而符合2中的匹配条件的字段,就会按照3中定义的映射方式来映射。

六:查询
1.elasticsearch提供的查询方式有很多,例如:
①:查询所有
②:分词查询
③:词条查询
④:模糊查询
⑤:范围查询
⑥:布尔查询
2.虽然查询的方式有很多,但是基本语法是一样的:
在这里插入图片描述
3.排序
在这里插入图片描述
4.Filter过滤
1.当我们在京东这样的电商网站购物,往往查询条件不止一个,还会有很多过滤条件:而在默认情况下,所有的查询条件、过滤条件都会影响打分和排名。而对搜索结果打分是比较影响性能的,因此我们一般只对用户输入的搜索条件对应的字段打分,其它过滤项不打分。此时就不能简单实用布尔查询的must来组合条件了,而是实用 filter 方式。
2.语法:
在这里插入图片描述
5._source 筛选
1.默认情况下,elasticsearch在搜索的结果中,会把文档中保存在 _source的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加 _source 的过滤
2.语法:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值