Elasticsearch、Nest 和 Lucene.net

标签 elasticsearch lucene.net nest

我知道 Elasticsearch 基于 Lucene,但我想知道 Elasticsearch 是否给我开发搜索引擎而不是直接使用 Lucene.Net 编码带来任何好处。抱歉,如果问题有点简单,但在搜索创建搜索引擎的可能性后我感到困惑。

我找到了更多简单的 lucene.net 搜索示例,但 Elasticsearch 和 Nest 的示例并不多。另一个问题是 Nest 和 Elasticsearch 之间到底有什么区别?他们是一样的吗?

如果有人在这里给我一些启发,也许有一个不错的示例,我将不胜感激。我需要的是?简单,快速和快速的搜索引擎。什么是最好的选择?任何其他替代方案也可以,但只能是 .net(c# 或 vb),谢谢。

最佳答案

Lucene

Lucene .NET 端口 Lucene.Net 是一个搜索引擎库,用于在应用程序中支持全文搜索;它基于您提供给它的文档(以及文档中的字段)构建倒排索引以支持全文搜索。 An example of this is search within the Nuget Gallery source ,其中 nuget 包及其属性被转换为文档以传递给 Lucene。倒排索引跨文件存储在一个目录中。

Elasticsearch

Elasticsearch是一个在幕后使用 Lucene 的分布式搜索引擎 - An Elasticsearch cluster can be made up of one or more nodes, where each node can contain a number of shards and replicas ; 每个分片都是一个完整的 Lucene 索引。拥有这样的基础架构可以实现快速性能,并允许水平缩放以处理跨大量数据的搜索,因为您不再受限于单台机器上的单个 Lucene 索引的约束。此外,您可以通过容错和灾难恢复实现高可用性,因为数据可以跨分片复制,这意味着没有单点故障。 An example of Elasticsearch with NEST is up on my blog.

使用哪个?

好吧,这取决于您的用例(几乎总是这样,对吧?);如果您的应用程序是安装到机器上的应用程序并且所有数据都保存在本地,您可能会决定在应用程序中使用 Lucene 库并将索引目录保存到本地磁盘。同样,如果您有一个简单的 Web 应用程序,该应用程序在具有少量 用户的单个服务器上运行,那么使用 Lucene 也可能是一个明智的选择。另一方面,如果您的应用程序在网络场中的多台机器上运行并且需要搜索功能,那么使用像 Elasticsearch 这样的分布式搜索引擎是个好主意。

Elasticsearch 的扩展性如何?回到 2013 年,Github was using Elasticsearch to index 2 billion documents即站点上每个存储库中的所有代码文件 - 跨越 44 个独立的 Amazon EC2 实例,每个实例都有 2 TB 的临时 SSD 存储,总共提供 30 TB 的主要数据。 Stackoverflow 还使用 Elasticsearch 为本网站的搜索提供支持(也许开发人员可以评论一些数字/指标?)

关于Elasticsearch、Nest 和 Lucene.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29818589/

相关文章:

c# - ElasticSearch 7.1删除索引C#API

java - 如何模拟 ElasticSearch 客户端

elasticsearch - 如何使用elasticsearch搜索单词的开头?

.net - Lucene.Net最佳实践

elasticsearch - Elasticsearch Nest Top Hits 聚合

elasticsearch - 重复 grok 模式

mysql - Logstash 从 MySQL 一对多导入

elasticsearch - elasticsearch如何对得分相同的文档进行排序?

c# - 在类似 eBay 的系统中使用的最佳搜索引擎 (.NET)

sorting - Lucene.NET - 按 int 排序