ELK:快速入门之-ES7 VS Solr
Posted 健哥说编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK:快速入门之-ES7 VS Solr相关的知识,希望对你有一定的参考价值。
2、elasticsearch7
分布式的全文搜索引擎。
ELK:分别是指:elasticsearch,Logstash,Kibana。
学习法则:用20%时间,可以学会80%的技术。但如果需要掌握另外20%的技术,则需要付出80%的时间或是更多。
1、人物:Doug Cutting
1998年9月4号、google公司在美国硅谷成立,它是一个家做搜索引擎的公司。
一位名叫:Doug Cutting的美国工程师,他迷上了搜索引擎,他做了一个文本搜索的函数库命名为:Lucene.,且开源。
Lucene由Java编写,基于Lucene的搜索服务包含:Solr、Es。
早期,这个Lucene项目,发布在Doug Cutting的个人网站和SourceForge,后来2001年,Lucene成为apache的一个子项目。
2004年,Doug Cutting在lucene的基础上,和Apache的开源伙伴Mike Cafarella合作,开发开源搜索引擎,命名为Nutch。
Nutch是建立在一Lucene核心之上的一个网页搜索应用程序,可以下载下来直接使用,它在Lucene的基础上,增加了网络爬虫的一些网页相关的功能。
随着时间的推移,无论是google还是nutch,都面临搜索对象“体积”不断增大的问题。
google在整个过程是,想了很多办法,并无私地分享出来。
2003年,google发表了一篇技术文章,分开介绍了自己的文件系统:GFS(google file system).这是google为海量存储设计的专用文件系统。
第二年,2004年,Doug Cutting基于Google的GFS论文,实现了分布式文件系统,将它命名为:NDFS(Nutch Distributed File System)。
2004年,google又发表了一篇论文,介绍自己MapReduce的编程模型。这个编程模型用于大规模数据集(大于1T)的并行分析运算。
又是第二年,2005年,Doug Cutting 又基于MapReduce在Nutch搜索引擎上实现了此功能。
2006年,yahoo公司,招安了Doug Cutting。
加入yahoo之后,Doug Cutting将NDFS和Mapreduce进行了改造,并重新命名为:hadoop。(NDFS也更名为:HDFS)。
Doug Cutting 被称为:Lucene,hadoop之父。
ES是基于Lucene的搜索服务器。
2006年,Google又发表的论文,介绍自己的BigTable,这是一种列式的数据存储系统,用于处理海量数据的非关系型数据库。
Doug Cutting 又根据BigTable在hadoop中实现了Hbase。
2008年,hadoop成功成为apache的顶级项目。同年7月,hadoop打破世界记录,成为最快排序1TB数据的系统,用时:209秒。
2、Lucene与ES的关系
ES是基于Lucene做一些封装和增强。
3、ES概述
ES是一个开源的,高扩展的分布式全文检索引擎,它可近乎实时的存储、检索数据。ES也是用Java开发,并使用Lucence做为其核心来实现所有索引和搜索功能的。但是它们目的是通过简单的RESTful Api来隐藏Lucene的复杂性。从而让全文检索变得简单。
根据权限产品测试机构DB Engines的统计,在2016年1月,ES已经超过Solr成为排名第一个搜索引擎应用。
4、Elasticsearch的诞生历史
许多年前,一个叫Shay Banon的待业工程师跟随他的新婚妻子来到伦敦,他的妻子想在伦敦学习做一名厨师。而他在伦敦寻找工作的期间,接触到了Lucene的早期版本,他想为自己的妻子开发一个方便搜索菜谱的应用。
直接使用Lucene构建搜索会有很多的坑以及重复性的工作,所以Shay便在Lucene的基础上不断进行抽象来让Java程序嵌入搜索变得更容易一些,经过一段时间的打磨,就诞生了他的第一个开源作品,他给自己的这个作品起了个名字,叫 “Compass”,中文即“指南针”的意思。
之后,Shay找到了一份新工作,新工作是处在一个高性能分布式的开发环境中。他在工作中渐渐发现,越来越需要一个易用的高性能、实时、分布式搜索服务,于是他决定重写Compass,将它从一个库打造成了一个独立的server,并将其改名为Elasticsearch。
Elasticsearch发布的第一个版本是在2010年的二月份,从那之后,Elasticsearch便成了Github上最受人瞩目的项目之一,并且很快就有超过300名开发者加入进来贡献了自己的代码。后来Shay和另一位合伙人成立了公司专注打造Elasticsearch,他们对Elasticsearch进行了一些商业化的包装和支持。但是,Elasticsearch承诺,永远都将是开源并且免费的。
不过悲剧的是,Shay承诺为妻子开发的菜谱搜索应用,到现在还没做出来……
关于上面的外传在es的官方网站也可以看的到:
https://www.elastic.co/cn/about/history-of-elasticsearch
最初就是个菜谱 App
伦敦的公寓内,Shay Banon 正在忙着寻找工作,而他的妻子正在蓝带 (Le Cordon Bleu) 烹饪学校学习厨艺。在空闲时间,他开始编写搜索引擎来帮助妻子管理越来越丰富的菜谱。
他的首个迭代版本叫做 Compass。第二个迭代版本就是 Elasticsearch(基于 Apache Lucene 开发)。他将 Elasticsearch 作为开源产品发布给公众,并创建了 #elasticsearch IRC 通道,剩下来就是静待用户出现了。
公众反响十分强烈。用户自然而然地就喜欢上了这一软件。由于使用量急速攀升,此软件开始有了自己的社区,并引起了人们的高度关注,尤其引发了 Steven Schuurman、Uri Boness 和 Simon Willnauer 的浓厚兴趣。他们四人最终共同组建了一家搜索公司。
5、ES vs Solr
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(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。
Solr:
Solr 是Apache一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
Solr可以独立运行,运行在Jetty、Tomcat等这些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、Fast/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,国内著名的有百度(Baidu)。它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户,因此他们是真正的搜索引擎。
从搜索结果来源的角度,全文搜索引擎又可细分为两种,一种是拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,并自建网页数据库,搜索结果直接从自身的数据库中调用,如上面提到的7家引擎;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如Lycos引擎。
ElasticSearch vs Solr 总结
(1)es基本是开箱即用,非常简单。Solr安装略微复杂一丢丢,可关注(solr6.6教程-基础环境搭建(一))
(2)Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
(3)Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
(4)Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
(5)Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;
ES建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索。
Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
(6)Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。
以上是关于ELK:快速入门之-ES7 VS Solr的主要内容,如果未能解决你的问题,请参考以下文章
ELK:elasticsearch快速入门之Kibana+Logstash安装