我在Windows7上运行Solr,无法在cmd上使用Curl,因此我使用的是post.jar。 (是的,我使用Cygwin和Mingw,但是想在这种情况下坚持使用cmd.exe。)
有没有办法可以通过post.jar直接在命令中添加文件,而不是创建一个xml文档,然后将xml doc添加到命令中?
具体来说,如果我在xml文件中添加以下标记,文档就会上传得很漂亮:
<add><doc><field name="id">50</field><field name="title">Test Title</field><field name="author">Dan</field><field name="content">Test using post.jar </field></doc></add>
但是,如果我尝试在命令中添加相同的标记,则会向我发送错误的请求错误:
在Cmd输入:
java -Ddata=args -jar post.jar "<add><doc><field name="id">50</field><field name="title">Test Title</field><field name="author">Dan</field><field name="content">
Test using post.jar </field></doc></add>"
返回:
SimplePostTool: FATAL: Solr returned an error: Bad Request
我找不到任何关于通过post.jar向solr添加数据的文档或示例,而不是外部xml文件。 删除效果很好:
java -Ddata=args -jar post.jar '<delete><id>42</id></delete>'
提前谢谢。
答案 0 :(得分:3)
好的,我已经明白了。对于任何可能在未来遇到这种情况的人:
java -Ddata=args -jar post.jar "<add><doc><field name=\"id\">17</field></doc></add>"
确保双引号xml标记并使用“\”转义内部标记双引号。例如,我将xml标记从<add>
双引用到</add>
。此外,我不得不逃避字段 id 周围的引号。确保对所有字段执行此操作并提交。
此外,如果您使用java进行开发,请确保将两者都转换为斜杠和引号。例如,我的ProcessBuilder字符串中的最后一个参数是我的标签,如下所示:
"<add><doc><field name=\\\"id\\\">17</field></doc></add>"
注意在java中转义的额外斜杠。
我希望这可以帮助那里的人...祝你好运!