搜索引擎优化宝典 pdf(Elasticsearch实时的分布式搜索和分析引擎-Elasticsearch简介)
优采云 发布时间: 2022-01-24 04:12搜索引擎优化宝典 pdf(Elasticsearch实时的分布式搜索和分析引擎-Elasticsearch简介)
弹性搜索简介*
Elasticsearch 是一个实时分布式搜索和分析引擎。它可以帮助您以前所未有的速度处理*敏*感*词*数据。
它可以用于全文搜索、结构化搜索和分析,当然你也可以将这三者结合起来。
Elasticsearch 是一个基于全文搜索引擎 Apache Lucene™ 的搜索引擎。可以说,Lucene 是当今最先进、最高效的全功能开源搜索引擎框架。
但是 Lucene 只是一个框架,要充分利用它的功能,需要使用 JAVA 并在程序中集成 Lucene。要理解它的工作原理需要大量学习,而且 Lucene 确实很复杂。
Elasticsearch 使用 Lucene 作为内部引擎,但在全文搜索使用时,只需要使用统一开发的 API,无需了解其背后复杂的 Lucene 运行原理。
当然,Elasticsearch 并不像 Lucene 那样简单。它不仅包括全文搜索功能,还可以执行以下任务:
将如此多的功能集成到单个服务器中,您可以轻松地通过客户端或任何您喜欢的编程语言与 ES 的 RESTful API 进行通信。
Elasticsearch 入门非常简单。它带有许多非常合理的默认值,这使它成为初学者在开始时避免复杂理论的好方法。
它已安装并可以使用,并且可以以很少的学习成本进行生产。
随着学习的越来越深入,也可以利用 Elasticsearch 更高级的功能,整个引擎可以灵活配置。您可以根据自己的需要定制自己的 Elasticsearch。
用例:
但 Elasticsearch 不仅适用于大型企业,它还帮助 DataDog 和 Klout 等许多初创公司扩展了能力。
Elasticsearch 的优缺点**:
优势
Elasticsearch 是分布式的。不需要其他组件,分发是实时的,称为“推送复制”。Elasticsearch 完全支持 Apache Lucene 的近实时搜索。处理多租户不需要特殊配置,而 Solr 需要更高级的设置。Elasticsearch 采用网关的概念,使完整的备份变得更容易。每个节点形成一个点对点的网络结构,当一些节点发生故障时,会自动分配其他节点代替它们工作。
缺点
只有一个开发者(目前的 Elasticsearch GitHub 组织不止于此,已经有相当活跃的维护者)不够自动化(不适合当前新的 Index Warmup API) Solr 简介*
Solr(读作“solar”)是 Apache Lucene 项目的开源企业搜索平台。其主要功能包括全文搜索、命中标记、分面搜索、动态聚类、数据库集成和富文本(如Word、PDF)的处理。Solr 具有高度可扩展性,并提供分布式搜索和索引复制。Solr 是最流行的企业搜索引擎,Solr4 还添加了 NoSQL 支持。
Solr 是一个独立的全文搜索服务器,用 Java 编写并在 Apache Tomcat 或 Jetty 等 servlet 容器上运行。Solr 使用 Lucene Java 搜索库作为全文索引和搜索的核心,并具有类似 REST 的 HTTP/XML 和 JSON API。Solr 强大的外部配置功能使其可以适应多种类型的应用程序而无需 Java 编码。Solr 有一个插件架构来支持更高级的定制。
由于 Apache Lucene 和 Apache Solr 项目于 2010 年合并,这两个项目都是由同一个 Apache Software Foundation 开发团队制作的。Lucene/Solr 或 Solr/Lucene 在提及技术或产品时是相同的。
Solr 的优缺点
优势
Solr 拥有一个更大、更成熟的用户、开发人员和贡献者社区。支持添加多种格式的索引,如HTML、PDF、Microsoft Office系列软件格式,以及JSON、XML、CSV等纯文本格式。Solr 更加成熟稳定。在不考虑索引的情况下搜索会更快。
缺点
建立索引时,搜索效率下降,实时索引搜索效率不高。Elasticsearch 和 Solr 的比较*
Solr 在纯粹搜索现有数据时更快。
实时建索引时,Solr会阻塞io,查询性能会很差。Elasticsearch 优势明显。
随着数据量的增加,Solr 的搜索效率变得越来越低,而 Elasticsearch 没有明显变化。
综上所述,Solr 的架构并不适合实时搜索应用。
实际生产环境测试*
下图显示将搜索引擎从 Solr 切换到 Elasticsearch 后,平均查询速度提高了 50 倍。
Elasticsearch 与 Solr 比较总结
Solr 是传统搜索应用的强大解决方案,但 Elasticsearch 更适合新兴的实时搜索应用。
其他基于 Lucene 的开源搜索引擎解决方案* 直接使用 Lucene
说明:Lucene是一个JAVA搜索类库,本身并不是一个完整的解决方案,需要额外的开发工作。
优点:具有许多成功案例的成熟解决方案。apache顶层项目继续快速推进。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单的定制,就可以满足最常见的需求;优化后可支持10亿+搜索。
缺点:需要额外的开发工作。所有的扩展、分发、可靠性等都需要自己实现;非实时,从索引到能够搜索有时间延迟,目前“Near Real Time”(Lucene Near Real Time search)搜索方案的可扩展性有待进一步提升
描述:基于Lucene,支持分布式、可扩展、容错、准实时的搜索解决方案。
优点:开箱即用,可以与Hadoop一起分发。具有扩展和容错机制。
缺点:只是一个搜索方案,索引部分还是需要自己实现。在搜索功能中,只实现了最基本的需求。成功案例较少,项目成熟度略低。因为需要支持分布式,对于一些复杂的查询需求,定制会比较困难。
说明:Map/Reduce模式,分布式索引构建方案,可与Katta配合使用。
优点:分布式索引和可扩展性。
缺点:只有索引方案,不包括搜索实现。在批处理模式下工作,对实时搜索的支持很差。
描述:基于Lucene的一系列解决方案,包括准实时搜索zoie、分面搜索实现bobo、机器学习算法分解器、摘要存储库krati、数据库模式包装器sensei等
优点:经过验证的解决方案,支持分布式、可扩展、功能丰富的实施
缺点:离linkedin公司太近,可定制性差
说明:基于Lucene,索引存在于cassandra数据库中
优点:参考cassandra的优点
缺点:参考cassandra的缺点。另外,这只是一个演示,没有大量验证
说明:基于Lucene,索引存在于HBase数据库中
优势:看HBase的优势
缺点:请参阅 HBase 的缺点。另外,在实现中,lucene术语是按行存储的,但是每个术语对应的发布列表是按列存储的。随着单个词条的发帖列表的增加,查询速度会受到很大影响
请转发+关注,回复“赠品”有大量素材送出!