使用 curl 重新加载 Solr 核心

Posted

技术标签:

【中文标题】使用 curl 重新加载 Solr 核心【英文标题】:Reload Solr core with curl 【发布时间】:2012-07-17 10:23:41 【问题描述】:

我正在尝试通过以下语句重新加载 Solr 核心(版本 3.6.0):

curl http://localhost:8983/solr/admin/cores?action=RELOAD\&core=mycore

当我执行它时,我得到以下响应:

<?xml version="1.0" encoding="UTF-8"?>
<response>
   <lst name="responseHeader">
      <int name="status">0</int>
      <int name="QTime">1316</int>
   </lst>
</response>

当我将这样的 URL 放在浏览器中时,我得到了类似的响应(区别在于 QTime 的值)。

我的问题是,如果我从浏览器调用 URL,我可以在日志信息中看到重新加载已执行,但如果我从 CURL 语句调用它,我在日志信息中看不到任何内容(也就是说,没有执行过reload过程)。

我必须更改一些配置数据吗?似乎呼叫没有到达 Solr 服务器...

【问题讨论】:

您的 curl 请求似乎没问题,我不明白为什么浏览器请求和 curl 请求之间可能存在差异,即使您没有收到任何错误。 @javanna,我也看不出任何区别。我会继续努力的。 【参考方案1】:

尝试用双引号将命令中的 URL 括起来,如下所示:

curl "http://localhost:8983/solr/admin/cores?action=RELOAD&core=mycore"

希望对你有帮助

【讨论】:

【参考方案2】:

1.尝试使用-A指定User-Agent

curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" http://localhost:8983/solr/admin/cores?action=RELOAD\&core=mycore

2.Curl不能执行js脚本

所以请确保不是因为 js 脚本。

您可以使用chrome或Firebug+Firefox的开发者工具查看http通信过程。

3.使用wireshark或sth检查“调用是否到达Solr服务器”。

希望对你有帮助。

【讨论】:

添加我能看到的-A代理时没有区别。

以上是关于使用 curl 重新加载 Solr 核心的主要内容,如果未能解决你的问题,请参考以下文章

Solr 建议器近乎实时不可用

使用 ajax 在 .net 核心中正确重新加载部分视图

修改 php.ini 时未加载 PHP cURL

PHP 无法加载 php_curl.dll 扩展

如何在 cellEdit 之后强制从持久存储重新加载核心数据

通过核心数据加载文件后,NSBrowser 不会从 NSTreeController 重新填充子项