本文已参与「新人创作礼」活动,一起开启掘金创作之路。
最近工作中需要用到Elasticsearch,在学习的过程中,做点笔记。
Lcenue
Lucene是一套信息检索工具的jar包,不包含搜索引擎系统! 包含:索引结构!读写索引的工具!排序,搜索规则...工具类!
Lucene和ElasticSearch的关系
ElasticSearch是基于Lucene做了一些封装和增强。
ElasticSearch概述
ElasticSearch,简称为ES,ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据,ES也使用java开发并使用Lucenue作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
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来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucenue非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的使用过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
Elasticsearch和Solr比较
当单纯的对已有数据进行搜索时,Solr更快。
当实时建立索引时,Solr会产生io阻塞,查询性能较差,Elasticsearch具有明显的优势。
随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。
Elasticsearch vs Solr 总结
- ES基本是开箱即用,非常简单。Solr安装略微复杂一丢丢!
- Solr利用Zookeeper进行分布式管理,而Elasticsearchh自身带有分布式协调管理功能。
- Solr支持更多格式的数据,比如JSON、XML、CSV,而Elasticsearch仅支持JSON文件格式。
- Solr官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
- Solr查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;
- ES建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索
- Solr是传统搜索应用的有利解决方案,但Elasticsearch更适用于新兴的实时搜索应用。
- Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而Elastic search相对开发维护者较少,更新太快,学习使用成本较高。