首先,本人来简单介绍下 Solr:
扩展 —— Solr 简介:
Solr 是Apache下的一个 顶级开源项目,
采用Java开发,它是 基于Lucence 的 全文搜索服务器
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请求,向 搜索引擎服务器 提交一定格式的 文件,生成索引;也可以通过提出 查找请求,并得到 返回结果
那么,接下来,本人来讲解下 ES和Solr的区别:
ES 和 Solr 的区别:
首先,本人来通过几张图来对比下 ES和Solr:
单纯 搜索:
从上图中,我们能够看得出:
在 单纯搜索 的情况下,Solr 的 查询效率 远高于 ES
实时建立索引:
从上图中,我们能够看得出:
在 实时建立索引 的情况下,Solr产生了IO阻塞,查询效率 低于 ES
大数据量:
从上图中,我们能够看得出:
随着数据量的增加,Solr的搜索效率越来越低,而ES基本没有明显变化
总结:
- es基本是开箱即用,非常简单,
Solr安装略微复杂一些- Solr 利用 Zookeeper 进行 分布式管理,
而Elasticsearch则使用自身带有分布式协调管理功能- Solr 支持 更多格式 的数据,比如 JSON、XML、CSV,
而Elasticsearch仅支持 JSON文件格式- Solr 官方提供的 功能更多,
而Elasticsearch本身 更注重于 核心功能,高级功能 多由 第三方插件提供,例如图形化界面需要kibana友好支撑- Solr 查询快,但 更新索引时慢(即插入时除慢),用于电商等查询多的应用
- ES建立索引快(即直询慢),即实时性查询快,用于Facebook、新浪等搜索。
- Solr 是传统搜索应用的有力能决方案,但 Elasticsearch 更适用于 新兴的实时搜索应用
- Solr比较成熟,有一个更大、更成熟的用户、开发和贡献者社区,
而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高