ElasticSearch7.6学习——基础篇

说明

  • 本人还是一名小白,由于跟公司大佬交流了一波,啥都不懂了我准备开始学习ElasticSearch,努力成为一名优秀的取数人(自嘲)。由于b站有个关于ElasticSearch播放量超高的视频,故准备从这个视频开始学习相关知识,下面将在此文章里面记录学习过程以及心得,方便后续查看
  • 此学习的目的不在于完完全全弄懂全部知识,由于学习是一个螺旋上升的过程,今天不懂的知识,也许明天就悟了,所以给自己定的目标主要是了解以及会简单使用;目前也不太清楚这个视频是否符合当下的我,后续如果学习完成,会在最后分享学习心得的。

一、ElasticSearch课程简介

简单了解ElasticSearch

  • ElasticSearch(简称ES):主要的功能是搜索,主要针对的是大数据量的搜索;
  • 大家一定听过并用过百度、Google等搜索引擎,经常听到这样的一句话,有问题找度娘;虽然百度现在被大多数人诟病,但是大家还是会在百度上面搜索相关东西。对于这样的搜索引擎怎么将你需要的东西呈现给你呢,这就需要一个大数据背后的搜索工具啦。像百度、淘宝、京东等公司,都需要在这样的工具
  • SQL(Structured Quevy Language(结构化查询语言)):想来聊一聊SQL,特别是MySQL。最近取数就在频繁的利用SQL,有一个比较大的感觉,如果连接的表不是特别多的话,数据量也不是特别多的话,查询起来还是挺快的;但是一旦涉及特别多的表的时候,查询速度就会变慢,甚至压根查不出来数据。还有一个比较大的问题,MySQL是关系型数据库,存储的数据有限,不能看看各个业务状态下的数据,比如说不能看到订单中间的情况,只能看到最开始和最后的情况
  • 总结:如果需要搜索的功能,你就需要ElasticSearch,特别是大数据量的时候

后续课程重点

  • 聊一个人Doug Cutting(lucene创始人)
  • Solr与ElasticSearch
  • 安装软件
  • ElasticSearch生态圈
  • 分词器ik
  • RestFul操作 ES
  • CRUD
  • SpringBoot 集成ElasticSearch
  • 爬虫爬取数据
  • 实战、模拟全文检索

补充知识

  • REST (REpresentation State Transfer) 描述了一个架构样式的网络系统,指的是一组架构约束条件和原则。
  • RESTful 指的是满足这些约束条件和原则的应用程序或设计。
  • RESTful service是一种架构模式,它的轻量级web服务,发挥HTTP协议的原生的GET,PUT,POST,DELETE。
  • REST 并非始终是正确的选择。 它作为一种设计 Web 服务的方法而变得流行,这种方法对专有中间件(例如某个应用程序服务器)的依赖比基于 SOAP 和 WSDL 的方法更少。
  • CRUD:指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层的基本操作功能。

感想

  • 后续的学习重点会放在了解ES以及CRUD之前的内容,后续实战的地方可能会涉及JAVA、Linux等相关知识,为了能坚持下去,降低预期,对一些比较难的地方了解即可,重点放在小白阶段能学的会的地方

相关链接

什么是REST ? 什么是RESTful?
什么是CRUD? CRUD的操作

二、聊聊Lucene创始人

  • 先从一个人物的故事开始后续的学习之旅吧~

Doug Cutting

  • 1998年9月4日,Google公司在美国硅谷成立。正如大家所知,它是一家做搜索引擎起家的公司
  • 一位名叫Doug Cutting的美国工程师,也迷上了搜索引擎。他做了一个用于文本搜索的函数库(姑且理解为软件的功能组件),命名为Lucene
  • Lucene是用JAVA写成的,目标是为各种中小型应用软件加入全文检索功能。因为好用而且开源(代码公开),非常受程序员们的欢
  • 2004年,Doug Cutting再接再励,在Lucene的基础上,和Apache开源伙伴Mike Cafarella合作,开发了一款可以代替当时的主流搜索的开源搜索引擎,命名为Nutch
  • Nutch是一个建立在Lucene核心之上的网页搜索应用程序,可以下载下来直接使用。它在Lucene的基础上加了网络爬虫和一些网页相关的功能,目的就是从一个简单的站内检索推广到全球网络的搜索上,就像Google一样。
  • 2003年,Google发表了一篇技术学术论文,公开介绍了自己的谷歌文件系统GFS(Google File System)。这是Google公司为了存储海量搜索数据而设计的专用文件系统。
  • 2004年,Doug Cutting基于Google的GFS论文,实现了分布式文件存储系统,并将它命名为NDFS(Nutch Distributed File System)。
  • 2004年,Google又发表了一篇技术学术论文,介绍自己的MapReduce编程模型。这个编程模型,用于大规模数据集(大于1TB)的并行分析运算。
  • 第二年(2005年),Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。
  • 2004年之前,作为互联网开拓者的雅虎,是使用Google搜索引擎作为自家搜索服务的。在2004年开始,雅虎放弃了Google,开始自己研发搜索引擎。所以。。。
  • 加盟Yahoo之后,Doug Cutting将NDFS和MapReduce进行了升级改造,并重新命名为Hadoop(NDFS也改名为HDFS,Hadoop Distributed File System)。
  • 2006年,Google又发论文了。
  • 这次,它们介绍了自己的BigTable。这是一种分布式数据存储系统,一种用来处理海量数据的非关系型数据库。
  • Doug Cutting当然没有放过,在自己的hadoop系统里面,引入了BigTable,并命名为HBase。
  • 这个,就是后来大名鼎鼎的大数据框架系统——Hadoop的由来。而Doug Cutting,则被人们称为Hadoop之父。

总结

  • Lucene是一套信息检索工具包,jar包,不包含搜索引擎系统;包含:索引结构、读写索引的工具、排序、搜索规则……工具类
  • Lucene与ElasticSearch关系
  • ElasticSearch是基于Lucene做了一些封装和增强(上手十分简单)

原文链接:

文章链接
https://blog.csdn.net/qq_38987057/article/details/86507209

三、ElasticSearch概述

  • Elaticsearch (简称为es),es是一个开源的高扩展分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据级别)的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。|
  • 据国际权威的数据库产品评测机构DB Engines的统计,在2016年1月, ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用

历史

  • 多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。
  • 直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便ava程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做"Compass"。
  • 后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。
  • 第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github.上最受欢迎的项目之一 , 代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能 ,不过Elasticsearch将永远开源且对所有人可用。
  • Shay的妻子依旧等待着她的食谱搜索……

使用的公司

  • 1、维基百科(类似百度百科):全文检索、高亮、搜索推荐
  • 2、The Guardian (国外新闻网站) :类似搜狐新闻,用户行为日志(点击、浏览、收藏、评论) 、社交网络数据(对某某新闻的相关看法) 、数据分析、给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好、坏、热门、垃圾、鄙视、崇拜)
  • 3、Stack Overflow (国外的程序异常讨论论坛) : IT问题、程序的报错、提交上去,有人会跟你讨论和回答;全文检索,搜索相关问题和答案;程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应的答案
  • 4、GitHub (开源代码管理) :搜索上千亿行代码
  • 5、电商网站:检索商品
  • 6、日志数据分析、logstash采集日志、ES进行复杂的数据分析、ELK技术(elasticsearch+logstash+kibana)
  • 7、商品价格监控网站:用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户;比如说订阅牙膏的监控,如果高露洁牙膏的家庭套装低于50块钱,就通知我,我就去买。
  • 8、BI系统(商业智能/Business Itelligence): 比如说有个大型商场集团,BI分析一下某某区域最近3年的用户消费金额的趋势以及用户群体的组成构成,产出相关的数张报表,**区、最近3年、每年消费金额呈现100%的增长,而且用户群体85%是高级白领,开一个新商场。ES执行数据分析和挖掘,Kibana进行数据可视化
  • 9、国内:站内搜索(电商、招聘、门户、等等) ;IT系统搜索(OA、CRM、ERP 等等) ;数据分析( ES热门的一个使用场景)

四、Solr与ES的对比

Elasticsearch简介

  • Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。
  • 它用于全文搜索、结构化搜索、分析以及将这三者混合使用
    维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。
  • 英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。
  • StackOverflow结合全文搜索与地理位置查询,以及more-like-this功能来找到相关的问题和答案。
  • Github使用Elasticsearch检索1300亿行的代码。
  • 但是Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决方案。
  • Elasticsearch可以在你的笔记本上运行,也可以在数以百计的服务器上处理PB级别的数据。
  • Elasticsearch是一一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域, Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
  • 但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
    Elasticsearch也使用ava开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

Solr简介

  • Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供 了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
  • Solr可以独立运行,运行在Jetty、等这些Servlet容器中 ,Solr索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档, Solr根据xml文档添加、删除、更新索引。 Solr 搜索只需要发送HTTP GET请求,然后对Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能 , Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
  • solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。
  • Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。

Lucene简介

  • Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。
  • Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一 套用于全文检索和搜寻的开源程式库 ,由Apache软件基金会支持和提供。
  • Lucene提供了一 个简单却强大的应用程式接口,能够做全文索引和搜索。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。
  • Lucene是一个全文检索引擎的架构。那什么是全文搜索引擎?
  • 全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google、FastAlITheWeb. AltaVista、 Inktomi. Teoma、 WiseNut等 ,国内著名的有百度( Baidu)。它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户 ,因此他们是真正的搜索引擎。
  • 从搜索结果来源的角度,全文搜索引擎又可细分为两种, 一种是拥有自己的检索程序( Indexer) , 俗称"蜘蛛" ( Spider )程序或”机器人”( Robot )程序,并自建网页数据库,搜索结果直接从自身的数据库中调用,如上面提到的7家引擎;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如Lycos引擎。

ElasticSearch vs Solr总结

  • 1、es基本是开箱即用(解压就可以用! ) ,非常简单。Solr安装略微复杂一丢丢!

  • 2、 Solr 利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。

  • 3、Solr支持更多格式的数据,比如JSON、XML、 CSV ,而Elasticsearch仅支持json文件格式。

  • 4、Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑~!

  • 5、Solr 查询快,但更新索引时慢(即插入删除慢) ,用于电商等查询多的应用;

    • ES建立索引快(即查询慢) ,即实时性查询快,用于facebook新浪等搜索。
    • Solr 是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。
  • 6、Solr比较成熟,有一个更大、更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

视频链接

ElasticSearch7.6学习视频链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值