【问题标题】:Running Solr in read-only mode以只读模式运行 Solr
【发布时间】:2011-04-07 21:52:59
【问题描述】:

我想我在这里遗漏了一些明显的东西。我不得不想象很多人向其他开发人员开放他们的 Solr 服务器,并且不希望他们能够修改索引。

solrconfig.xml 中有什么东西可以设置为有效地使索引只读吗?

更新说明: 我的目标是将 Solr 与由另一个应用程序管理的现有 Lucene 索引一起使用。这很好用,但我想确保 Solr 永远不会尝试写入该索引。

【问题讨论】:

  • 为什么说“很多人向其他开发者开放他们的 Solr 服务器”?
  • 好吧,我说过我想象他们会这样做。假设您有一个包含大量内容的站点,您已经在使用 Solr 来驱动站点搜索,并且您希望其他站点能够搜索您的内容。与其构建自定义 API,Solr 可以让这一切变得更简单......

标签: solr


【解决方案1】:

将 Solr 实例公开到公共互联网是一个坏主意。即使您可以剥离一些组件以使其成为只读,但它的设计并未考虑到安全性,它旨在用作内部服务,就像您不会公开 RDBMS 一样。

来自Solr Security wiki page

首先,Solr 没有 关注自己的安全性,无论是在 文档级别或 沟通层面。它是强烈的 建议应用 包含 Solr 的服务器被防火墙 这样的唯一客户可以访问 Solr 是你自己的。默认/示例 Solr 的安装允许任何客户端 有权访问它以添加、更新和 删除文件(当然还有 搜索/阅读),包括访问 Solr 配置和架构 文件和管理用户 界面。

甚至ajax-solr,一个用于在浏览器中运行的 JavaScript 的 Solr 客户端,recommends talking to Solr through a proxy

guardian.co.uk 为例:众所周知they use Solr for searching,但他们构建了API 以让其他人访问他们的内容。这样他们就可以definecontrol 准确了解他们希望人们搜索什么以及如何搜索。

否则,任何脚本小子都可以编写一个简单的循环来拒绝您的 Solr 实例,从而导致您的网站崩溃。

【讨论】:

  • 这些都是很好的建议,希望任何设置 Solr 进行生产的人都会遵循这些建议。但这并没有真正解决所提出的问题。我将编辑问题以阐明我的特定用例。
【解决方案2】:

您可能只需删除在 solrconfig.xml 中定义 solr.XmlUpdateRequestHandler 的行。

复制是一种设置只读同时能够进行索引的好方法。只需设置一个访问受限的主机和一个只读的从机(通过从配置中删除您的 XmlUpdateRequestHandler)。从站将从主站复制,但不会直接接受任何索引。

更新

我刚刚在 Solr 1.4 中看到,您可以 disable component。我刚刚在 /update requestHandler 上尝试过,但无法再建立索引。

【讨论】:

  • 显然注释掉请求处理程序不会禁用任何东西,因为它只是作为覆盖(根据wiki.apache.org/solr/SolrRequestHandler)。我想你可以为 /update 请求处理程序添加一个虚假的类,但这似乎是个坏主意。
  • 不错的发现!我认为这个“禁用组件”功能是金票,但不幸的是,它似乎不允许您禁用核心组件,包括 /select /update 和 /admin。感谢您在寻找解决方案方面的帮助。
  • 你测试了吗?我之前尝试过,通过删除 requestHandler 声明或使用 enable 属性足以禁用 /update 我的索引
  • 是的,我测试过,但我会再试一次。更改“启用”属性肯定适用于自定义请求处理程序,但我无法让它禁用 /update。
  • 是的,当 'enable' 设置为 false 时,Solr 只是忽略定义并使用核心处理程序。当我注释掉 /update 的整个 requestHandler 行时,也会发生同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 2012-05-01
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多