文章目录
1. Elasticsearch 是什么
-
Elastic 技术栈(也称为 ELK Stack)包括:包括 Elasticsearch(用于存储、搜索)、Kibana(用于数据展示)、Beats(用于数据采集) 和 Logstash(用于数据传输)。
-
ELK 能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。
-
Elaticsearch,简称为 ES,ES 是一个 开源的高扩展的分布式全文搜索引擎 ,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
2. Lucene、Elasticsearch And Solr
1. Lucene
- Lucene 是 Apache 软件基金会 Jakarta 项目组的一个子项目,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。
- 在 Java 开发环境里 Lucene 是一个成熟的免费开源工具。就其本身而言,Lucene 是当前以及最近几年最受欢迎的免费 Java 信息检索程序库。
- 但 Lucene 只是一个提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的服务框架搭建起来进行应用。
2. Elasticsearch And Solr
- 目前市面上流行的搜索引擎软件,主流的就两款:Elasticsearch 和 Solr,这两款都是基于 Lucene 搭建的,可以独立部署启动的搜索引擎服务软件。由于内核相同,所以两者除了服务器安装、部署、管理、集群以外,对于数据的操作修改、添加、保存、查询等等都十分类似。
- 在使用过程中,一般都会将 Elasticsearch 和 Solr 这两个软件对比,然后进行选型。这两个搜索引擎都是流行的、先进的的开源搜索引擎。它们都是围绕核心底层搜索库 - Lucene 构建的 - 但它们又是不同的。像所有东西一样,每个都有其优点和缺点:
3. Elasticsearch 和 Solr 优缺点
-
Google 搜索趋势结果表明,与 Solr 相比,Elasticsearch 具有很大的吸引力,但这并不意味着 Apache Solr 已经死亡, Solr 仍然是最受欢迎的搜索引擎之一,拥有强大的社区和开源支持。
-
Elasticsearch的优缺点:
优点
- Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
- Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
- 处理多租户不需要特殊配置,而Solr则需要更多的高级设置。
- Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
- 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点
- 提交者来自单个公司。
- 还不够自动(不适合当前新的Index Warmup API)
-
Solr的优缺点
优点
- Solr有一个更大、更成熟的用户、开发和贡献者社区。
- 支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
- Solr比较成熟、稳定。
- 不考虑建索引的同时进行搜索,速度更快。
缺点
- 建立索引时,搜索效率下降,实时索引搜索效率不高
4. Elasticsearch 与 Solr 运行速度比较
-
当单纯的对已有数据进行搜索时,Solr更快
-
当实时建立索引时, Solr会产生io阻塞,查询性能较差 。
-
实时建立索引 Elasticsearch具有明显的优势
随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。
-
实际生产环境测试
下图为将搜索引擎从Solr转到Elasticsearch以后的平均查询速度有了50倍的提升。
综上所述,Solr的架构不适合实时搜索的应用。
5. Elasticsearch 与 Solr 热度比较
-
在百度指数中搜索 Elasticsearch 与 Solr 的热度对比
-
搜狗指数的热度对比
-
Github 热度对比
通过这些热度的数据对比,不难看出,Elasticsearch 的热度、关注度是要高于 Solr 的。
6. 小总结
- 那么,到底是 Solr 还是 Elasticsearch?
- 很难找到明确的答案。无论选择 Solr 还是 Elasticsearch,首先需要了解正确的用例和未来需求。总结他们的每个属性。
- 由于易于使用,Elasticsearch 在新开发者中更受欢迎。一个下载和一个命令就可以启动一切。
- 如果除了搜索文本之外还需要它来处理分析查询,Elasticsearch 是更好的选择
- 如果需要分布式索引,则需要选择 Elasticsearch。对于需要良好可伸缩性和以及性能分布式环境,Elasticsearch 是更好的选择。
- Elasticsearch 在开源日志管理用例中占据主导地位,许多组织在 Elasticsearch 中索引它们的日志以使其可搜索。
- 如果你喜欢监控和指标,那么请使用 Elasticsearch,因为相对于 Solr,Elasticsearch 暴露了更多的关键指标