一、两者的概念
【solr】: Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果,【特点】是一个高性能,采用Java开发,
基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
2、【ElasticSearch】:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
二、比较
1、性能的小例子
下面文字有误,其实是在不断动态添加。
综上所述,Solr的架构不适合实时搜索的应用。
2、具体比较
比较类目 | solr | Elasticsearch |
诞生时间 | 2004 | 2010 |
搜索基础 | Lucene搜索 | |
实时建立索引 | solr会产生io阻塞,效率低 | 不阻塞,效率高 |
不断动态添加数据 | 检索效率变低 | 变化不大 |
自身系统管理 | 利用zookeeper进行分布式管理 | 自身带有分布式系统管理功能 |
部署 | 一般都要部署到web服务器上,如tomcat。启动tomcat的时候需要配置tomcat与solr的关联 | 自带运行功能,下载安装包直接安装就行 |
功用范围 | 官网提供的功能 | 更专注核心搜索,其它依赖第三方插件 |
支持索引方式 | HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式 | 仅支持json文件格式 |
社区和开发者 | apache 软件基金和社区支持 | 单一商业实体及其员工 |
节点发现 | Apache Zookeeper ,在大师项目中成熟且经过实战测试 | Zen内置于ES本身,需要专用的主节点才能进行分裂脑保护 |
高速缓存 | 全局,每个段更改无效 | 每段,更适合动态更改数据 |
分析引挚性能 | 非常适合精确计算的静态数据 | 结果的准确性取决于数据放置 |
全文搜索功能 | 基于lucene语文分析,多建议,拼写检查,丰富的高亮显示支持 | 基于Lucene语文分析,单一建议API实现 |
DevOps支持 | 尚未完全,还在完善中。。 | 非常好的API |
机器学习 | 内置-在流聚合之上,专注于逻辑回归和学习排名贡献模块 | 商业功能,专注于异常和异常值以及时间序列数据 |