Elasticsearch,Nest和Lucene.net

bat*_*aci 9 lucene.net elasticsearch nest

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

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

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

Rus*_*Cam 16

Lucene的

Lucene和.NET端口Lucene.Net是一个搜索引擎库,用于支持应用程序中的全文搜索; 它根据您提供的文档(以及文档中的字段)构建一个倒排索引,以支持全文搜索.这方面的一个例子是Nuget Gallery源代码中的搜索,其中nuget包及其属性被转换为文档以传递给Lucene.反向索引存储在目录中的文件中.

Elasticsearch

Elasticsearch是一个分布式搜索引擎,它使用Lucene - 一个Elasticsearch集群可以由一个或多个节点组成,其中每个节点可以包含许多分片和副本 ; 每个分片都是一个完整的Lucene索引.拥有此类基础架构可实现快速性能,并允许水平扩展以处理大量数据中的搜索,因为您不再受单个计算机上单个Lucene索引的限制.此外,您可以通过容错和灾难恢复实现高可用性,因为可以跨分片复制数据,这意味着没有单点故障.我的博客上有一个关于NEST的Elasticsearch的例子.

哪个用?

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

Elasticsearch的规模如何?早在2013年,Github就使用Elasticsearch索引20亿个文档,即网站上每个存储库中的所有代码文件 - 跨44个独立的Amazon EC2实例,每个实例具有2 TB的短暂SSD存储,总共提供30 TB的主数据.Stackoverflow还使用Elasticsearch为此站点提供搜索功能(也许开发人员可以使用某些数字/指标进行评论?)