如何设置solr索引数据路径版本9.2.0

问题描述 投票:0回答:3

我有一个linux系统,安装了solr 9.2.0并启动了solr。我的 solr 安装路径是 /opt/solr-9.2.0/ 我尝试通过执行以下步骤来创建核心

    mkdir -p /opt/solr-9.2.0/server/solr/samplecore/conf
    cp -pr /opt/solr-9.2.0/server/solr/configsets/sample_techproducts_configs/conf /opt/solr-9.2.0/server/solr/samplecore

我通过引用另一个非常旧的版本安装中的示例版本,在位置 /opt/solr-9.2.0/server/solr/samplecore/ 创建了 core.properties,其中包含以下内容

    #Written by CorePropertiesLocator
    #Wed May 03 17:32:11 PDT 2023
    name=samplecore
    config=solrconfig.xml
    schema=schema.xml
    dataDir=/index/dev/solr/samplecore

我启动了 solr,如下所示

/opt/solr-9.2.0/bin/solr start -h mylinuxbox -p 8983

此后,我在浏览器中访问了 http://mylinuxbox:8983/solr 并期望看到创建的核心,但我收到如下错误

SolrCore 初始化失败 Samplecore:org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:访问被拒绝(“java.io.FilePermission”“/index/dev/solr/samplecore/snapshot_metadata”“读取”) 请检查日志以获取更多信息。

我还缺少其他设置或配置吗?我需要 solr 使用 /index/dev/solr/samplecore 路径来获取索引数据。请在这件事上给予我帮助。我是 solr 和 java 的新手。

我已经在描述中解释了我尝试过的一切

solr solr9
3个回答
0
投票

我们注意到,在 v9 上创建新核心时,您无法将数据目录指向不在核心根目录内的目录。因此,在您的示例中,您可能需要将

core.properties
更改为:

    name=samplecore
    config=solrconfig.xml
    schema=schema.xml
    dataDir=data

请注意,创建到数据目录的符号链接(如果它位于核心根目录之外)也会导致发生相同的错误。


0
投票

它有助于解决符号链接的依赖性

SOLR_SECURITY_MANAGER_ENABLED=false


0
投票

从 Solr 9.4 开始,这个问题似乎有了适当的解决方案。

简短回答

升级到 Solr 9.4 并将以下内容添加到您的

solr.in.cmd

set SOLR_OPTS=%SOLR_OPTS% -Dsolr.allowPaths=C:\path1\to\allow,C:\path2\to\allow

solr.in.sh
:

SOLR_OPTS="$SOLR_OPTS -Dsolr.allowPaths=/path1/to/allow,/path2/to/allow"

然后重新启动solr。

长答案

正如之前的答案中所述,solr 9 默认情况下启用了 java 安全管理器。这可以防止 solr 访问核心根目录之外的目录。这就是为什么之前的答案建议禁用安全管理器。

在 Solr 8.6 中添加了

solr.allowPaths
属性,用于指定默认目录之外允许的路径。在 solr 9.0 -> 9.3 中,安全管理器中未配置此属性。这意味着即使您可以将路径添加到此属性,它仍然会导致权限错误。

这个问题已在 solr 9.4 中得到解决,并将以下几行添加到 solr/server/etc 中的 security.policy 文件中

permission java.io.FilePermission "${solr.allowPaths}", "read,write,delete,readlink";
permission java.io.FilePermission "${solr.allowPaths}${/}-", "read,write,delete,readlink";

这意味着您现在可以在 solr.in.cmd 或 solr.in.sh 中配置 allowedPaths 属性,如上面简短答案中所述。

如果您由于某种原因无法升级到 9.4,您可以手动将这些行添加到 security.policy 中。

参考资料:

  1. 默认启用安全管理器(Solr 9 发行说明)
  2. 添加了allowPaths属性(Solr 8.6更新说明)
  3. Jira 票证描述了 security.policy 的问题和潜在修复
  4. 拉取修复 security.policy 的请求
  5. 9.4 版本标签中的 security.policy 文件(第 216-217 行)
© www.soinside.com 2019 - 2024. All rights reserved.