ES(Elasticsearch)和solr的差别

  • Post author:
  • Post category:其他




Elasticsearch




简介



Elasticsearch


是一个


实时分布式搜索和分析引擎


。它让你以


前所未有的速度处理大数据


成为可能。

它用于


全文搜索



结构化搜索



分析以及


将这三者混合使用:

维基百科使用Elasticsearch


提供全文搜索并高亮关键字,以及输入实时搜索


(search-asyou-type)


和搜索 纠错(did-you-mean)


等搜索建议功能。

英国卫报使用Elasticsearch


结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了 解公众对新发表的文章的回应。

StackOverflflow结合全文搜索与地理位置查询,以及


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









Solr




比较




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


新浪等搜索。

6、Solr


是传统搜索应用的有力解决方案,但


Elasticsearch


更适用于新兴的实时搜索应用。

7、


Solr


比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而


Elasticsearch


相对开发维护者

较少,更新太快,学习使用成本较高。



版权声明:本文为weixin_44519124原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。