问题:ElasticSearch、Sphinx、Lucene、Solr、Xapian。哪个适合哪个用途? [关闭]

我目前正在寻找其他搜索方法,而不是使用庞大的 SQL 查询。最近看到elasticsearch,玩了一下whoosh(一个搜索引擎的Python实现)。

你能给出你选择的理由吗?

解答

作为 ElasticSearch 的创建者,也许我可以给你一些理由,说明我为什么要继续创建它 :)。

使用纯 Lucene 具有挑战性。如果您希望它真正表现良好,您需要注意很多事情,而且它是一个库,因此没有分布式支持,它只是一个需要维护的嵌入式 Java 库。

就 Lucene 的可用性而言,早在我创建 Compass 的时候(差不多 6 年了)。它的目的是简化 Lucene 的使用,让日常的 Lucene 变得更简单。我一次又一次遇到的是能够分发 Compass 的要求。我开始在 Compass 内部进行工作,通过与 GigaSpaces、Coherence 和 Terracotta 等数据网格解决方案集成,但这还不够。

在其核心,分布式 Lucene 解决方案需要分片。此外,随着 HTTP 和 JSON 作为无处不在的 API 的进步,这意味着可以轻松使用具有不同语言的许多不同系统的解决方案。

这就是我继续创建 ElasticSearch 的原因。它具有非常先进的分布式模型,原生使用 JSON,并公开了许多高级搜索功能,所有这些都通过 JSON DSL 无缝表达。

Solr 也是通过 HTTP 公开索引/搜索服务器的解决方案,但我认为ElasticSearch提供了一个非常出色的分布式模型和易用性(虽然目前缺乏一些搜索功能,但不会长久,无论如何,计划是将所有 Compass 功能纳入 ElasticSearch)。当然,我是有偏见的,因为我创建了 ElasticSearch,所以你可能需要自己检查。

至于Sphinx,我没用过,所以不能评论。我可以向您推荐的是这个帖子在 Sphinx 论坛我认为证明了 ElasticSearch 的优越分布式模型。

当然,ElasticSearch 的功能远不止分布式。它实际上是在考虑云的情况下构建的。您可以查看网站上的功能列表。

Logo

欢迎大家访问Elastic 中国社区。由Elastic 资深布道师,Elastic 认证工程师,认证分析师,认证可观测性工程师运营管理。

更多推荐