【问题标题】:Create new cores in SOLR via HTTP?通过 HTTP 在 SOLR 中创建新内核?
【发布时间】:2014-03-04 09:42:18
【问题描述】:

是否可以通过 HTTP 在 SOLR 中创建新内核?对于一个看似非常简单的问题,我似乎找不到明确的答案......

我要创建的每个核心都将具有相同的架构/配置(多租户 SaaS 架构)。

我找到了这个页面:

这让我觉得这是可能的,但具体我应该传入的每个参数实际上是什么还不是很清楚:

  • instanceDir - 这是我希望新内核所在的路径,还是现有“模板”内核所在的路径?它是完整的文件路径,还是相对路径?相对于什么?

  • config - 这是现有配置文件的完整文件路径吗?还是亲戚?相对于什么?

  • 架构 - 同上

  • dataDir - 这是现有核心的数据目录,还是新的?完整的文件路径?相对的?相对于什么?它是否已经存在,还是 SOLR 会为我创建它?

【问题讨论】:

  • 根据我的经验(并在 solr-user listserv 上确认),您无法通过 HTTP 创建新核心。是的,它有一个 API,但该 API 假定您已经创建了 conf 目录并将正确的文件放入其中,这不能通过 HTTP 完成:您必须具有文件系统访问权限。 “配置集”功能可能是解决这个问题的一种方法,但它并没有像我宣传的那样工作,当我在 solr-user 上询问时,回答是,“它是新的并且仍然存在错误,所以我们并不感到惊讶它不起作用。”
  • 这确实有效,我已将下面的工作答案标记为现在已接受。我们已经在生产中使用它已经有一段时间了,并且取得了巨大的成功。
  • Keith,您使用的是“Solr Cloud”配置(即使用 ZooKeeper)还是单节点 Solr 实例?
  • 单节点实例。
  • @Keith。我好像现在面临和你一样的问题。能否请您与我们分享正确答案:http://what should be here??? 因为 buddy86 与http://'localhost':8983... 的答案乍一看并不正确。

标签: solr


【解决方案1】:

是的,您可以通过 HTTP 创建 Solr 内核。您已找到要查看的正确 URL (https://wiki.apache.org/solr/CoreAdmin)。以上所有参数都是可选的。

instanceDir - 这是创建新内核的路径。它将在“/example/solr/”下创建您提供的文件夹结构。如果你不提供这个参数,它会自动创建一个新的核心(没有集合),比如 collection1

config - 如果您想为新内核使用不同的 solrconfig.xml,请提供此内容。否则,它将默认共享现有核心的 (collection1) 配置。

schema - 如果您想为新内核提供不同的 schema.xml,请提供此内容。否则,它将默认共享现有核心的 (collection1) 架构。

dataDir - 这是存储新内核数据的路径。它将在新的核心文件夹下创建您提供的文件夹结构。

如果您真的不想为您的新核心进行一些不同的配置,请遵循示例 HTTP URL

http://localhost:8983/solr/admin/cores?action=CREATE&name=core_name&numShards=2&replicationFactor=2

希望这会有所帮助。

【讨论】:

  • 所以集合号只是一个自动递增的值?在 instanceDir 的解释中,听起来您是在说“collection1”是新的核心名称。但随后在 config cmets 中,您将“collection1”称为现有核心。我只是对此感到困惑,还是? dataDir 是不是像一个基础级目录,它会在该目录中为核心创建一个目录,还是?
  • 运行您提供的示例 URL 不起作用。它说“创建 SolrCore 'new_core_name' 时出错:无法创建核心:new_core_name
  • 日志显示:无法加载文件 /usr/share/solr/new_core_name/solrconfig.xml。所以看起来它并没有真正尝试使用任何现有的 solrconfig.xml。
  • @buddy86 这些说明是针对“Solr Cloud”还是针对单节点 Solr?在单节点 Solr 上使用您的示例 URL 不起作用:Error CREATEing SolrCore 'core_name': Unable to create core [core_name] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/var/solr/data/core_name/conf'
  • @KeithPalmerJr。您知道说明可能不起作用的任何原因吗?它们似乎不能作为通过 HTTP 创建新核心的独立方式工作 - 您必须首先通过其他方式将 solrconfig.xml 文件放入目录中,否则您会遇到上述 Mark E Haase 描述的相同错误。
【解决方案2】:

我遇到了完全相同的问题,但我无法根据 https://wiki.apache.org/solr/CoreAdmin#CREATE 上的描述解决问题

为我解决的问题是更新到 Solr 5 并使用定义共享 solrconfig/schema 的 configSet(在 4.8 中引入)。以下 URL 可用于创建具有相同配置的多个核心:

http://localhost:8983/solr/admin/cores?action=CREATE&name=new_core&configSet=basic_configs

“basic_configs”是 Solr 5 下载附带的配置集的名称 (solr-5.0.0/server/solr/configsets/basic_config)。在启动 Solr 服务器后,该 URL 可以立即使用。

https://cwiki.apache.org/confluence/display/solr/Config+Sets

【讨论】:

  • 您是否使用了 Solr 5 的安装脚本?我遇到了和你一样的问题,但是使用 configSet 对我不起作用。我正在使用与您完全相同的 URL(我的 Solr 也在 localhost:8983 上)但我收到一个错误:Could not load configuration from directory /var/solr/data/configsets/basic_configs。我不知道为什么它会出现在/var/solr 中——我的solr.install.dir/opt/solr,但我的solr.solr.home/var/solr。您是否也遇到过同样的问题?
  • 不,我没有,我的测试设置是在 Windows 上运行的。我刚刚解压缩了 zip 并启动​​了服务器。据我所知,configsets 文件夹应该在 solr 主页中(zip 中的 ./server/solr/),所以它在 /var/solr.. 中查找似乎并没有错。但我不知道为什么正在中间添加数据文件夹。配置集是否位于 ./opt/solr/... 中?
  • 是的,我的配置集在/opt/solr/server/solr/... 中,我在 solr-user 列表上发布了这个,回复基本上是,“配置集是新的,仍然有问题。”有人说配置集甚至不适用于使用 Solr 的单个节点(而不是“solr 云”),但没有人能指出证实这一信念的文档。我只是放弃并在我的安装手册中添加了solr create -c foo:管理员必须自己做。不过,我仍然嫉妒它适用于你的情况......
  • 对于那些还在寻找答案的人,其实这个是对的。我想知道为什么 buddy86 的错误答案被接受了。它可能会误导像我这样的其他新手。
  • 对于那些API请求仍然声称“无法从目录/var/solr/data/configsets/basis_configs加载配置”的人,请参阅cwiki.apache.org/confluence/display/solr/…并将configSetBaseDir添加到solr.xml,重新启动Solr 并尝试再次添加核心。这对我有用。
【解决方案3】:

configsets 文件夹递归复制到var/solr/data/your_new_core_name,然后从管理面板添加your_new_core_name

configsets 路径通常应该在这里。

/solr-8.6.3/server/solr/configsets/_default/conf

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2017-03-11
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多