lucene的概述
Lucene是一个高性能、可伸缩的信息搜索(IR)库。它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, License]。同样,Lucene是当前非常流行的、免费的Java信息搜索(IR)库。
1:ES的概述
ES是对apache lucene的封装。
ES是elasticSearch的缩写,它是一个实时的分布式的查询和分析引擎。它是基于apache lucene开发的。
2:ES的目标是让全文搜索变得简单
3:ES可以支持横向的扩展,支持pb级别的结构和非机构化的数据处理。
4:使用ES可以以前所未有的速度来处理大数据。
5:
https://www.elastic.co/cn/
点击这个链接,获取更多的信息。
ElasticSearch 的工作原理
我们假设 百度的用的是 ElasticSearch,工作的流程如下,
1:是在百度的搜索框中输入要的关键词信息 。
2:回车或者点击百度一下按钮,
3:把关键词的信息传入到搭建好的ES集群。
4: 把查询到的结果返回 给client。
有俩个前提的条件如下
1:ES集群要搭建好的
2:使用爬虫技术爬取海量 的数据,把爬到的数据存入到这个ES集群的索引中。
ES的应用场景
1:站内的搜索如(淘宝,天猫等。。
2:在数据存储和数据可视化方面是引领者。
3:国外的维基百科 ,github使用ES的搜索引擎,
4:国内的百度,阿里云 等。。
solr的概念
1:solr和elasticsearch一样也是在apache lucene的全文搜索服务器进行开发的。
2:solr和elasticsearch都是基于该apache lucene做的一些封装
三种的区别与联系:
在使用Lucene时仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。而solr和elasticsearch都是基于该工具包做的一些封装。
Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节,自己的应用可以直接利用诸如 …/solr?q=abc 这样的HTTP GET/POST请求去查询,维护修改索引。
solr的安装是比较复杂的,而elasticsearch是比较简单的开箱即用。
Lucene使用上更加灵活,但是你需要自己处理搜素引擎系统架构,以及其他附加附加功能的实现。而Solr帮你做了更多,但是是一个处于高层的框架,Lucene很多新特性不能及时向上透传,所以有时候可能发现需要一个功能,Lucene是支持的,但是Solr上已经看不到相关接口。
solr和elasticsearch都是基于Lucene实现的!
其次
solr利用zookpper进行分布式管理,而elasticsearch自身带有分布式协调管理功能;
solr比elasticsearch实现更加全面,solr官方提供的功能 更多,而elasticsearch本身更注 重于核心功能,高级功能多由第三方插件提供;
solr在传统的搜索应用中表现好于elasticsearch,而elasticsearch在实时搜索应用方面比solr表现好!
es天生就是为分布式而生的,而solr在4.x以后 才逐渐支持
es只支持json的格式,而solr支持更多的格式如csv,json,xml;
solr 在查询时速度较快,但是更新索引(插入删除)时比较慢的,适合用于查询多的业务,
es在建立索引快,查询快, 适合新兴的的实时搜索应用。