我在网络应用中使用Solr。由于部署会更简单,我想嵌入Solr。但是,http://wiki.apache.org/solr/EmbeddedSolr说“嵌入Solr不太灵活,难以支持,没有经过充分测试,应该保留用于特殊情况”?
我想更详细地了解权衡。我想知道它为什么不那么灵活?建议使用嵌入模式的情况是什么?
答案 0 :(得分:6)
当您需要一个未分发的简单解决方案时,建议使用嵌入式服务器。例如,在编写小型单元和集成测试时,您可能希望使用特殊配置的特殊Solr实例,例如使用RamDirectories而不是写回更改。
对于开发数据库也是如此。我总是使用内存数据库而不是写回加载预设场景的文件(我也用于验收和集成测试)。这样,您可以在重新启动应用程序和进行回归测试时获得速度优势。如果您的服务器在一秒或10秒内启动,那就不一样了,这就是您能够实现的目标。如果您的测试运行缓慢,那么在测试驱动开发方面,您会放慢速度。
另外一件事是,如果您需要专用的Solr服务器实例或需要云功能,您可以轻松地从使用嵌入式服务器切换到独立服务器。这只是一些代码行,你就完成了。
因此,如果您不知道是否需要专用服务器,请从嵌入式版本开始,享受简化的配置和设置以及轻微的性能提升。一旦你需要一个独立的服务器,只需更改一些代码行,其余代码保持不变。
答案 1 :(得分:5)
据我所知,这些警告是正确的
无法公开嵌入式服务器
如果有一天,您希望将应用程序的solr部分暴露给世界其他地方,那么您将无法做到。在问题Access embedded Solr server from external application
中详细阐述了这一点无管理界面
嵌入式服务器不提供管理界面。这是有道理的,因为它无法从外部访问,请参阅前面的警告。此外,当嵌入式服务器运行时,您无法访问其中的核心。 solr home与另一个提供管理界面的完全成熟的Solr安装。在问题How to access the admin interface of an EmbeddedSolrServer instance?
中详细阐述了这一点无分片支持
正如你可以在SO问题中读到的那样 How to connect embedded solr with each other by sharding嵌入式服务器不支持分片open issue。