文章目录
- 1.1、历史
- 1.2、Elasticsearch简介
- 1.3、Solr简介
- 1.4、Luence简介
- 1.5、Elasticsearch和Solr比较
Elaticsearch ,简称为es,es是一个开源的的分,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
据国际权威的数据库产品评测机构DB Engines的统计,在201 6年1月, ElasticSearch已超过Solr等,成为排名第一的搜索引擎 类应
用。
1.1、历史
多年前, 一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。
直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便ava程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做”Compass”。
后来Shay找到一份工作,这份工作处在高性能和内存数据 格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。
第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github.上最受欢迎的项目之一, 代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能 ,不过Elasticsearch将永远开源且对所有人可用。Shay的妻子依旧等待着她的食谱搜索.
谁在使用
- 维基百科,类似百度百科,全文检索,高亮,搜索推荐
- Stack Overflow (国外的程序异常讨论论坛) , IT问题,程序的 错,提交上去,有人会跟你讨论和回答,全文检问题和答案,程序 错了,就会将 错信息粘贴到里面去,搜索有没有对应的答案
- GitHub (开源代码管理),搜索 上千亿行代码
- 电商 站,检索商品
- 日志数据分析, logstash采集日志, ES进行复杂的数据分析, ELK技术, elasticsearch+logstash+kibana
- 商品价格监控 站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如说订阅牙膏白高露洁牙膏的家庭套装低于50块钱,就通知我,我就去买
- BI系统 ,商业智能, Business Intelligence。比如说有个大型商场集团, BI ,分析一下某某区域最近3年的用户消以及用户群体的组成构成,产出相关的数张 表, **区,最近3年,每年消费金额呈现100%的增长,而且用户群体85%时高级白领,开一个新商场。ES执行数据分析和挖掘, Kibana进行数据可视化
- 国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景)
1.2、Elasticsearch简介
Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。
它用于全文搜索、结构化搜索、分析以及将这三者混合使用:
维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。
StackOverflow结合全文搜索与地理位置查询,以及more-like-this功能来找到相关的问题和答案。
Github使用Elasticsearch检索1300亿行的代码。
但是Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决方案。Elasticsearch可以在你的笔记本上运行,也可以在数以百计的服务器上处理PB级别的数据。
Elasticsearch是一个基于Apache Lucene开源搜索引擎。无论在开源还是专有领域, Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索弓|擎库。
但是, Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是, Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索|和搜索的功能,但是它的目的是通过简单的RESTful API来
隐藏Lucene的复杂性,从而让全文搜索变得简单。
1.3、Solr简介
Solr是Apache下的-一个顶级开源项目,采用ava开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
Solr可以独立运行,运行在Jetty. Tomcat等这些Servlet容器中 , Solr 索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field 及其内容的XML文档, Solr根据xm|文档添加、删除、更新索引。Solr 搜索只需要发送HTTP GET请求,然后对Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能 , Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。
Solr是一个独立的企业级搜索应用服务器 ,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。
1.4、Luence简介
Lucene简介
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎而是一 个全文检索引擎的架构 ,提供 了完整的查询引擎和索引引擎 ,部分文本分析引擎 (英文与德文两种西方语言 )。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引|擎。Lucene是一 套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了- -个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一 个成熟的免费开源工具。 就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。
Lucene是一个全文检索引擎的架构。那什么是全文搜索引擎/p>
全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google、Fast/AlITheWeb、 AltaVista、 Inktomi. Teoma、 WiseNut等 ,国内著名的有百度( Baidu)。它们都是通过从互联 上提取的各个 站的信息(以 页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户 ,因此他们是真正的搜索弓|擎。
1.5、Elasticsearch和Solr比较
-
es基本是开箱即用,非常简单。Solr安装略微复杂一 丢丢!
-
Solr 利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。
-
Solr支持更多格式的数据,比如SON、XML、 CSV ,而Elasticsearch仅支持json文件格式。
-
Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要
kibana友好支撑 -
Solr 查询快,但更新索弓时慢(即插入删除慢) , 用于电商等查询多的应用;
1 ES建立索引快(即查询慢) ,即实时性查询快,用于facebook新浪等搜索。
2 Solr 是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。 -
Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者 区,而Elasticsearch相对开发维护者较少,更新太快,学习使用.
成本较高。
学习视频链接:https://www.bilibili.com/video/BV17a4y1x7zq=5
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!