我想我在这里遗漏了一些明显的东西。我必须想象很多人向其他开发人员开放他们的Solr服务器,并且不希望他们能够修改索引。
solrconfig.xml中是否有可以设置为有效使索引成为只读的东西?
更新澄清: 我的目标是将Solr与另一个应用程序管理的现有Lucene索引一起使用。这很好用,但我想确保Solr永远不会尝试写入这个索引。
答案 0 :(得分:7)
将Solr实例暴露给公共互联网是一个坏主意。即使您可以删除某些组件以使其成为只读组件,但它的设计并未考虑安全性,它本身就是用作内部服务,就像您不会公开RDBMS一样。
首先,Solr没有 担心安全问题 文件级别或 沟通水平。这是强烈的 建议申请 包含Solr的服务器是防火墙的 这样的唯一客户可以访问 索尔是你自己的。默认/示例 Solr的安装允许任何客户 访问它以添加,更新和 删除文件(当然 搜索/阅读),包括访问 Solr配置和架构 文件和管理用户 接口
即使是ajax-solr,javascript的Solr客户端也可以在浏览器recommends talking to Solr through a proxy中运行。
以guardian.co.uk为例:众所周知they use Solr for searching,但他们构建了一个API来让其他人访问其内容。通过这种方式,他们可以define和control确切地希望人们搜索内容的内容和方式。
否则,任何脚本小子都可以为DoS您的Solr实例写一个简单的循环,从而关闭您的网站。
答案 1 :(得分:2)
您可以在solrconfig.xml中删除定义solr.XmlUpdateRequestHandler的行。
复制是一种很好的方法,可以设置只读,同时能够进行索引。只需设置一个具有受限访问权限的主服务器和一个只读的服务器(通过从配置中删除XmlUpdateRequestHandler)。从站将从主站复制,但不会直接接受任何索引。
<强>更新强>
我刚刚在Solr 1.4中读过,你可以disable component。我刚刚在/ update requestHandler上尝试了它,我再也无法索引了。