ElasticSearch 概述

122 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Luence

Luence是Apache开源项目,作者Doug Cutting2000年发起项目,项目使用Java语言实现。Luence最核心的就是全文检索。关于作者是个非常厉害的人物,2006年受邀加入雅虎,后续发布了Hadoop,人称Hadoop之父,如今Hadoop不仅仅是一个搜索引擎,还被用作数据分析等。可以说Hadoop就是云计算领域的红帽。 Luence存在一些局限性:只能基于Java开发;类库的接口学习曲线陡峭;原生并不支持水平扩展(对于海量数据不行)。

ElasticSearch的前世今生

故事发生在许多年前的伦敦,一位待业工程师也就是ES的作者Shay Banon带着妻子来到的伦敦,妻子想要学习做菜。Shay Banon想为妻子开发一个搜索菜谱的应用,也就是ES的前身,这个项目基于Luence,后面被Shay Banon命名为Compass,意为指南针。后续公司业务需要,作者发现急切需要一个分布式搜索服务,于是使用Java重写Compass,改名为ElasticSearch。

ElasticSearch概述

ElasticSearch是一个基于Luence分布式搜索服务器。主要功能有数据分析数据搜索。ES非常大的一个亮点就是采用Restful风格,并且使用Java开发,对于想深入学习ES的同学是非常友好的。 扩展:ELK(ES+logstach+Kibana)企业中常用于日志收集分析。

Solr

Solr是Apache下的顶级开源项目,是一个独立的企业级搜索应用服务器, 它对外提供类似于Web-service的API接口。 用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果(区别于ES的Restful风格)。

Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

Solr的工作流程是文档通过Http利用XML 加到一个搜索集合中。查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。 扩展:Solr一般配合zk使用

Solr对比ElasticSearch

SolrElasticSearch
类Web-service接口Restful
数据支持xml,json等多种数据格式仅支持json
建立索引后,效率降低建立索引效率无明显变化
Solr独立的,一般与ZK配合使用Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”
较为成熟稳定目前主流,开源贡献者不少

综上:ES是目前主流的企业级解决方案,理由为:数据格式现在基本都使用json;使用上Restful更符合潮流;时间中Solr替换成ES效率是有提高的;分布式不需要集成其他组件。