我想构建一个高度可扩展的应用程序,我打算使用Lucene作为我的搜索引擎库。在浏览文档和常见问题时,我意识到它只允许通过在索引目录中创建一些write.lock来在存储位置打开一个索引编写器。我们可以在该索引上打开多个IndexReader。
我有兴趣构建一个架构,其中有许多索引器在不同的机器/服务器上运行,而多个搜索器在这些索引器创建的索引上回答各种类型的查询。搜索者和索引器都将在不同的计算机上运行。
在这种情况下,最好让多个索引器使用相同的索引存储位置来索引文档。怎么做到这一点?我应该使用像NFS(网络文件系统)这样的东西吗?这个问题是由Solr还是Lucene之上的其他框架解决的?我想到的一个明显的解决方案是为每个索引器创建一个索引,然后要求搜索者跨多个索引目录进行查询。但这些将导致创建大量不同的索引目录,就像索引器服务器一样多,我认为这并不是很理想。我想要(索引dirs的数量)<< (索引者数量)< (搜索者数量)
在这种情况下,我有哪些替代方案?
答案 0 :(得分:2)
答案 1 :(得分:2)
首先:永远不要使用带有Lucene的NFS,它只是缓慢而且有风险。
如果涉及可扩展性和高可用性,我建议您让elasticsearch为您完成所有艰苦工作,以便您可以专注于您的数据。您当然可以有多个线程索引数据。
如果您想了解有关elasticsearch的分布式特性的更多信息,我建议您查看this video。