Lucene定义
lucene是一个开发源代码的全文检索引擎工具包,但不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。
官网地址:http://lucene.apache.org/
ES定义
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式 多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch 是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前 流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳 定,可靠,快速,安装使用方便。
ES vs Lucene
成品与半成品的关系
Lucene专注于搜索底层的建设,而ElasticSearch专注于企业应用。
Solr 定义
Solr是Apache 下的一个开源项目,使用Java基于Lucene开发的全文检 索服务是一个独立的企业级搜索应用服务器,它对外提供类似于Webservice的API接口。用户可以通过http请求,向搜索引擎服务器提交 一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请 求,并得到XML格式的返回结果。
官网地址: https://lucene.apache.org/solr/
ES vs Solr 优缺点
Solr | ES | |
---|---|---|
优点 | 1)Solr有一个更大、更成熟的 用户、开发和贡献者社区。 2)Solr支持多种数据格式的索 引,比如:JSON、XML、CSV 等多种数据格式。 3)Solr发展比较成熟、稳定。 4)Solr搜索海量历史数据,速 度非常快,毫秒级返回数据。 | 1)分布式:节点对外表现对等, 加入节点自动均衡。 2)Elasticsearch 完全支持 Apache Lucene 的接近实时的搜 索。 3)处理多租户(multitenancy) 不需要特殊配置,而Solr则需要更 多的高级设置。 4)Elasticsearch 采用 Gateway 的概念,使得数据持久化更加简 单。 5)各节点组成对等的网络结构, 某些节点出现故障时会自动分配 其他节点代替其进行工作。 |
缺点 | Solr建立索引时,搜索效率下降, 实时索引搜索效率不高。 | 更改数据格式,比较麻烦。 |
ES vs Solr 检索速度
当单纯的对已有数据进行搜索时,Solr更快。
当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具 有明显的优势。
随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没 有明显的变化。
大型互联网公司,实际生产环境测试,将搜索引擎从Solr转到 Elasticsearch以后的平均查询速度有了50倍的提升。
ES vs Solr 热度
ES vs Solr 总结
-
二者安装都很简单。
-
Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
-
Solr 支持更多格式的数据,比如JSON、XML、CSV, 而 Elasticsearch 仅支持json文件格式。
-
Solr 官方提供的功能更多,而 Elasticsearch 本身更注 重于核心功能,高级功能多有第三方插件提供 。
-
Solr 在传统的搜索应用中表现好于 Elasticsearch,但在 处理实时搜索应用时效率明显低于 Elasticsearch。
-
Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
ES vs 关系型数据库
关系型数据 库 | Database (数据库) | Table (表) | Row (行) | Column (列) |
---|---|---|---|---|
ElasticSear ch | Index (索引库) | Type (类型) | Document (文档) | Field (字段) |
ES 架构
ES 工作原理
ES 在大数据中的应用
ES 应用场景
-
站内搜索:主要和 Solr 竞争,属于后起之秀
-
NoSQL Json文档数据库:主要抢占 Mongo 的市场,它 在读写性能上优于 Mongo ,同时也支持地理位置查询, 还方便地理位置和文本混合查询。
-
监控:统计、日志类时间序的数据存储和分析、可视化, 这方面是引领者
-
国外:Wikipedia(维基百科)使用 ES 提供全文搜索并 高亮关键字、Stack Overflow(IT问答网站)结合全文 搜索与地理位置查询、Github使用Elasticsearch检索 1300亿行的代码
-
国内:百度(在云分析、网盟、预测、文库、钱包、风 控等业务上都应用了ES,单集群每天导入30TB+数据, 总共每天60TB+)、新浪 、阿里巴巴、腾讯等公司均有 对ES的使用
-
使用比较广泛的平台ELK(ElasticSearch, Logstash, Kibana