curl 工具

以后章节中的许多例子会用到 curl 这个工具来通过 URL 发送数据给 Solr 索引库。curl 通过 HTTP、FTP 等其他协议来发送和接收数据。大部分的 Linux 发行版中包含了一个 curl。在网上(curl 的官网可能需要翻墙才能打开)可以用下载到 Linux、Windows 和其他操作系统版本的 curl 工具 ,这里有一个 Windows 版本的 curl

使用 curl 执行更新命令

可以使用 curl 这个工具执行之前的几个指令,通过它的 –data-binary 参数,可以添加 XML 消息到 curl 命令中,然后发送一个 HTTP POST 请求,示例:
curl http://localhost:8983/update -H "Content-Type: text/xml" --data-binary '
<add>
<doc>
<field name="authors">Patrick Eagar</field>
<field name="subject">Sports</field>
<field name="dd">796.35</field>
<field name="isbn">0002166313</field>
<field name="yearpub">1982</field>
<field name="publisher">Collins</field>
</doc>
</add>'
发送包含文件的 XML 消息时,可以使用以下例子:
curl http://localhost:8983/update -H "Content-Type: text/xml"
--data-binary @myfile.xml
也可以通过 HTTP GET 命令发送短的请求,GET 发送请求时,需要对命令中的特殊字符进行 URL 编码,如:”<” 和 “>”
curl http://localhost:8983/update?stream.body=%3Ccommit/%3E
从 Solr 返回的结果类似以下所示显示:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
&lt;response&gt;<br />
&lt;lst name=&quot;responseHeader&quot;&gt;<br />
&lt;int name=&quot;status&quot;&gt;0&lt;/int&gt;<br />
&lt;int name=&quot;QTime&quot;&gt;127&lt;/int&gt;<br />
&lt;/lst&gt;<br />
&lt;/response&gt;

如果状态失败时,status 字段会显示一个非 0 的值。servlet 容器将产生一个 HTML 格式的错误消息。

在 Solr 示例目录中尝试 Tika

首先启动 Solr 示例的服务:

java -jar start.jar

新开一个命令行窗口,定位到 docs 目录下,通过 HTTP POST 向 Solr 发送一个文件。

cd docs
curl “http://localhost:8983/solr/update/extract?literal.id=doc1&commit=true” -F “myfile=@tutorial.html

curl 的安装请参看前面的章节,在windows下,建议将 curl 安装目录放入环境变量的 Path 中。

上面的 URL 调用了 Extraction Request Handler,上传了 tutorial.html 这个文件,并制定它的 ID 为 doc1.以下是这个命令各个部分的解释:
  • literal.id=doc1 参数为被索引的文档提供必需的唯一 ID
  • commit=true 这个参数发送了一个提交请求(commit),让数据马上就能被搜索到。为了性能考虑,在提交大量文档时,不要每个文档都发送提交请求。
  • -F 参数提示 curl POST 数据时使用 multipart/form-data 这个 Content-Type,这样能支持二进制文件上传。
  • myfile=@tutorial.html 参数需要一个正确的路径。
现在可以通过这个链接查询刚刚上传的文档:

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress