【问题标题】:Tomcat SOLR multiple cores setupTomcat SOLR 多核设置
【发布时间】:2011-02-12 10:20:42
【问题描述】:

我整个上午都在尝试在 Apache Tomcat 服务器下运行的 SOLR 安装上设置多个内核,但没有成功。我的 solr.xml 看起来像这样:

<solr persistent="false" sharedLib="lib">
  <cores adminPath="/admin/cores">
    <core name="core0" instanceDir="/multicore/core0">   
        <property name="dataDir" value="/multicore/core0/data" />
    </core>
    <core name="core1" instanceDir="/multicore/core1">
        <property name="dataDir" value="/multicore/core1/data" />
    </core>
  </cores>
</solr>

什么是正确的目录结构?我是否需要更改 solrconfig.xml 中的某些内容?

【问题讨论】:

  • 它与 Tomcat 和 Apache 的哪个版本有关?我遇到了类似的问题,但我根本找不到这些文件或配置设置。我在 Tomcat6、Solr 3.6、Ubuntu 上。

标签: tomcat solr core multicore


【解决方案1】:

检查您的 instanceDir 值是否与 -Dsolr.solr.home 相关。如果 -Dsolr.solr.home 是“多核”,那么您的 instanceDir 应该只有“core0”。

如果将数据文件夹放在 instanceDir 中,则不必指定其路径:

<?xml version='1.0' encoding='UTF-8'?>
<solr persistent="true">
<cores adminPath="/admin/cores">
    <core name="core0" instanceDir="core0" />
    <core name="core1" instanceDir="core1" />
</cores>
</solr>

您不必在 solrconfig.xml 中设置任何内容。但是,如果您需要独立于核心位置配置处理程序,则可以使用变量 ${solr.core.instanceDir}。

更新

要使用 Tomcat 设置 solr.solr.home 变量,请在启动 Tomcat 之前使用 JAVA_OPTS 环境变量:

JAVA_OPTS="-Dsolr.solr.home=multicore"
export JAVA_OPTS
tomcat/bin/catalina.sh start

确保相对于工作目录正确设置“多核”。例如,如果 solr.solr.home='multicore',您必须从“multicore”所在的目录启动 Tomcat。

【讨论】:

  • 感谢 Pascal 的快速回答。如何检查我的 solr.solr.home 是什么?我在 Tomcat 而不是 Jetty 上运行 solr,因此在运行 start.jar 时无法在命令行上设置它。我尝试了上面的 solr.xml 但尝试访问devel:12345/solr/core0/admin 时仍然收到以下错误类型状态报告消息/solr/core0/admin/描述请求的资源(/solr/core0/admin/)不可用。有什么想法吗?
  • 使用Tomcat,可以在调用catalina脚本之前使用环境变量JAVA_OPTS设置-Dsolr.solr.home。
  • 好的,我设置了 JAVA_OPTS='-Dsolr.solr.home=multicore' 但仍然无法让它工作。我知道这是一个配置问题,但我无法弄清楚我在这里缺少什么。
  • @PascalDimassimo 如果有两个不同版本的 Solr 我该怎么办?
【解决方案2】:

这有点晚了,但我刚刚用instructions for a multicore SOLR instance on Tomcat发了一篇博文,内容如下:

  1. 下载安装32位/64位Windows服务 Tomcat 的安装程序
  2. 在服务器上安装了 Tomcat(没有 这里有特殊说明——只要运行安装并安装在任何地方 您希望)
  3. 通过转到 http://localhost:8080 验证 Tomcat 的安装
  4. 编辑 Tomcat conf/server.xml 并将 URIEncoding="UTF-8" 添加到 元素如图所示
  5. 下载 来自此处找到的其中一个镜像的 SOLR(下载了 apache-solr-1.4.1.zip 包)并解压包
  6. 创建SOLR所在的目录 将托管自(在我的情况下,我使用的是 e:\inetpub\solr)
  7. 复制 example\solr 目录的内容到您的 SOLR 主机目录(在我的情况下为 e:\inetpub\solr)
  8. 创建 您的每个内核的 SOLR 主机目录下的目录 希望创建(我为我想要的每个核心创建了十几个文件夹 在 e:\inetpub\solr 目录中创建。目录 包括 en-US、en-CA、en-GB 等)
  9. 复制 solr.xml 文件从 example\multicore 目录并将其粘贴到您的 SOLR 主机目录(我的示例为 e:\inetpub\solr)
  10. 编辑 solr.xml 文件以包含每个文件的信息 您创建的核心数(如果您在主机下创建了一个文件夹 一个名为 en-US 的核心,然后在 solr.xml 文件中的 元素: )
  11. 停止 Tomcat 服务
  12. 从以下位置复制 *solr*.war 文件 解压后的 SOLR 包中的 dist 目录 到您的 Tomcat webapps 文件夹
  13. 重命名 *solr*.war 文件到 solr.war
  14. 在 Windows 任务栏右侧的通知区域中,右键单击 Apache Tomcat 7 图标并选择 配置
  15. 点击Java 选项卡并将以下内容添加到 Java 选项 文本中 框:-Dsolr.solr.home=e:\inetpub\solr(更改 e:\inetpub\solr 到托管 SOLR 的任何位置)
  16. 点击 在对话框中OK,然后启动Tomcat 服务
  17. 打开conf\solrconfig.xml文件 在您创建的每个核心下并更改 dataDir 元素指向特定的 目录。如果此步骤未完成,您的所有核心将 为他们的数据使用相同的数据存储。
  18. 停止并 重新启动 Tomcat 服务
  19. 测试您的内核是否正在运行 通过从网络浏览器 http://localhost:8080/solr/en-US/select?q=*:* 运行查询(替换 “en-US” 与您命名的核心之一)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多