首页 » PHP教程 » lucenesolrphp技巧_Elasticsearch 与 Solr的比拟与技能选型

lucenesolrphp技巧_Elasticsearch 与 Solr的比拟与技能选型

访客 2024-12-05 0

扫一扫用手机浏览

文章目录 [+]

一、Elasticsearch特性

1.1 安装管理方便

lucenesolrphp技巧_Elasticsearch 与 Solr的比拟与技能选型

Elasticsearch没有其他依赖,下载后安装非常方便;只用修正几个参数就可以搭建起来一个集群。

lucenesolrphp技巧_Elasticsearch 与 Solr的比拟与技能选型
(图片来自网络侵删)

1.2 大规模分布式

Elasticsearch许可你开始小规模利用,但是随着你利用数据的增长,它可以建立在横向扩展的开箱即用。
当你须要更多的容量,只需添加更多的节点,并让集群重组,只须要增加额外的硬件,让集群自动利用额外的硬件。

可以在数以百计的做事器上处理PB级别的数据。

节点对外表现对等(每个节点都可以用来做入口);加入节点自动均衡,可以扩展到上百台做事器,处理PB级别的构造化或非构造化数据。

Elasticsearch致力于隐蔽分布式系统的繁芜性。
以下这些操作都是在底层自动完成的:

将你的文档分区到不同的容器或者分片(shards)中,它们可以存在于一个或多个节点中。
将分片均匀的分配到各个节点,对索引和搜索做负载均衡。
冗余每一个分片,防止硬件故障造成的数据丢失。
将集群中任意一个节点上的要求路由到相应数据所在的节点。
无论是增加节点,还是移除节点,分片都可以做到无缝的扩展和迁移

1.3 多租户的支持

ES处理多租户不须要分外配置,可根据不同的用场分索引;可以同时操作多个索引。

ES 的多租户大略的说便是通过多索引机制同时供应给多种业务利用,每种业务利用一个索引。
我们可以把索引理解为关系型数据库里的库,那多索引可以理解为一个数据库系统建立多个库给不同的业务利用。

在实际利用时,我们可以通过每个租户一个索引的办法将他们的数据进行隔离,并且每个索引是可以单独配置参数的(可对特定租户进行调优),这在范例的多租户场景下非常有用:例如我们的一个多租户运用须要供应搜索支持,这时可以通过 ES 根据租户建立索引,这样每个租户就可以在自己的索引下搜索干系内容了

1.4 高可用性

Elasticsearch集群是有弹性的 - 他们会自动检测到新的或失落败的节点,以及重组和重新平衡数据,以确保数据安全。

1.5 操作持久化

Elasticsearch把数据安全第一。
文档改变被记录在群集上的多个节点上的事务日志(transaction logs)中记录,以减少任何数据丢失的机会。

1.6 友好的RESTful API

Elasticsearch是API驱动。
险些任何动作都可以用一个大略的RESTful API利用JSON基于HTTP要求。
ElasticSearch 供应多种措辞的客户端 API。

Java

JavaScript

Groovy

.NET

PHP

Perl

Python

Ruby

1.7 范例利用案例

维基百科利用Elasticsearch来进行全文搜做并高亮显示关键词,以及供应search-as-you-type、did-you-mean等搜索建议功能。
英国卫报利用Elasticsearch来处理访客日志,以便能将公众年夜众对不同文章的反应实时地反馈给各位编辑。
StackOverflow将全文搜索与地理位置和干系信息进行结合,以供应more-like-this干系问题的展现。
GitHub利用Elasticsearch来检索超过1300亿行代码。
每天,Goldman Sachs利用它来处理5TB数据的索引,还有很多投行利用它来剖析股票市场的变动。

1.8 Elasticsearch的优缺陷:

优点

Elasticsearch是分布式的。
不须要其他组件,分发是实时的,被叫做”Push replication”。
Elasticsearch 完备支持 Apache Lucene 的靠近实时的搜索。
处理多租户不须要分外配置,而Solr则须要更多的高等设置。
Elasticsearch 采取 Gateway 的观点,使得完备份更加大略。
各节点组成对等的网络构造,某些节点涌现故障时会自动分配其他节点代替其进行事情。

缺陷

还不足自动(不适宜当前新的Index Warmup API)

二、Solr特性

Solr(读作“solar”)是Apache Lucene项目的开源企业搜索平台。
其紧张功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。
Solr是高度可扩展的,并供应了分布式搜索和索引复制。
Solr是最盛行的企业级搜索引擎,Solr4 还增加了NoSQL支持。

Solr是用Java编写、运行在Servlet容器(如 Apache Tomcat 或Jetty)的一个独立的全文搜索做事器。
Solr采取了 Lucene Java 搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。
Solr强大的外部配置功能使得无需进行Java编码,便可对 其进行调度以适应多种类型的运用程序。
Solr有一个插件架构,以支持更多的高等定制。

由于2010年 Apache Lucene 和 Apache Solr 项目合并,两个项目是由同一个Apache软件基金会开拓团队制作实现的。
提到技能或产品时,Lucene/Solr或Solr/Lucene是一样的。

2.1 Solr的优缺陷

优点

Solr有一个更大、更成熟的用户、开拓和贡献者社区。
支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
Solr比较成熟、稳定。
不考虑建索引的同时进行搜索,速率更快。

缺陷

建立索引时,搜索效率低落,实时索引搜索效率不高。

三、 Elasticsearch与Solr比拟

Solr与elasticsearch是当前两大最盛行的搜索运用做事器,他们的底层都是基于lucene。

Elasticsearch是分布式的,不须要其他组件,Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式折衷管理功能Elasticsearch设计用于云打算中,处理多租户不须要分外配置,而Solr则须要更多的高等设置。
当纯挚的对已有数据进行搜索时,Solr更快,实时建立索引时, Solr会产生io壅塞,查询性能较差, Elasticsearch具有明显的上风,随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变革

Elasticsearch与Solr的性能测试比较:

当纯挚的对已有数据进行搜索时,Solr更快。

当实时建立索引时, Solr会产生io壅塞,查询性能较差, Elasticsearch具有明显的上风。

随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变革。

四、云打算方面的运用

现在是分布式与云打算的年代,Elasticsearch是后来居上,天生支持分布式与云打算,海内现在主流云打算厂商都是基于Elasticsearch供应搜索云做事,如阿里云、腾讯云、京东云等,在云打算领域,Elasticsearch全面胜出。

相关文章

php线程互斥技巧_Qt开拓多线程间的互斥

(1)、有n个生产者同时制造产品,并把产品放入仓库中(2)、有m个消费者同时从仓库中取出产品(3)、规则A、当仓库未满,任意生产者...

PHP教程 2024-12-07 阅读0 评论0