1

我想构建一个高度可扩展的应用程序,我打算使用 Lucene 作为我的搜索引擎库。在浏览文档和常见问题解答时,我意识到它只允许通过在索引目录中创建一些 write.lock 在存储位置打开一个索引编写器。我们可以在该索引上打开多个 IndexReader。

我有兴趣构建一个架构,其中有多个索引器在不同的机器/服务器上运行,并且多个搜索器回答对这些索引器创建的索引的各种类型的查询。搜索器和索引器都将在不同的计算机上运行。

在这种情况下,最好让多个索引器使用相同的索引存储位置来索引文档。如何做到这一点?我应该使用 NFS(网络文件系统)之类的东西吗?Solr 或其他基于 Lucene 的框架是否解决了这个问题?我想到的一个明显的解决方案是为每个索引器创建一个索引,然后要求搜索者跨多个索引目录进行查询。但是这些将导致创建大量不同的索引目录,与索引器服务器一样多,我认为这并不是很理想。我想要 (# of index dirs) << (# of indexers) < (# of searchers)

在这种情况下,我有哪些不同的选择?

4

2 回答 2

2

看看ElasticSearchSolr Cloud

ElasticSearch 和 Solr 的比较

于 2012-08-29T14:36:23.133 回答
2

首先:永远不要将 NFS 与 Lucene 一起使用,它既慢又危险。

如果涉及可扩展性和高可用性,我建议您让 elasticsearch 为您完成所有艰苦的工作,这样您就可以专注于您的数据。您当然可以有多个线程索引数据。

如果您想进一步了解 elasticsearch 的分布式特性,我建议您观看此视频

于 2012-08-29T17:58:43.030 回答