索引csv文件solr - 缺少内容流

时间:2013-04-10 07:17:55

标签: solr

Error is as follows :
[root@hdqsltest1 garyTestDocs]# curl http://localhost:8983/solr/update/csv? literal.id=book2&commit --data-binary @sample.csv -H 'Content-type:text/plain; charset=utf- 8'
[1] 16541
bash: commit: command not found

响应看起来像这样 -

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 400 missing content stream</title>
</head>
<body><h2>HTTP ERROR 400</h2>
<p>Problem accessing /solr/update/csv. Reason:
<pre>    missing content stream</pre></p><hr /><i><small>Powered by Jetty://</small>     </i><br/>                                                
<br/>                                                
<br/>                                                
</body>
</html>                                                

sample.csv输入 -

 module,meets,question,response
 General Questions,,"Please provide us a detailed company background","We are great"  

schema.xml -

 <field name="module" type="text" indexed="true" stored="true" />
 <field name="meets" type="text" indexed="true" stored="true" />
 <field name="question" type="text" indexed="true" stored="true" />
 <field name="response" type="text" indexed="true" stored="true" />

solrconfig.xml中

 <!-- CSV update handler, loaded on demand -->

  <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy">
       <lst name="defaults"> 
             <str name="separator">,</str>
             <str name="header">true</str>
             <str name="encapsulator">"</str>
        </lst> 
   </requestHandler>

另一个sample.csv

   module,meets,question,response
   General Questions,,"Please provide us a detailed company background","Yes"

我启用了远程流式传输。我的查询是

   curl http://localhost:8983/solr/update/csv?literal.id=book12&commit=true --data-binary @sample.csv -H 'Content-type:text/plain; charset=utf-8' 

所以我做错了什么。请指导。

solr的版本= 3.6.2。

索引它的全部意义是能够查询字段吗?我也想知道是否可以提取csv文件以将其文本放在各个字段中,我知道它将csv文件的文本放在内容字段中。有关更新/提取的任何建议吗?我在这里问了2个问题。谢谢。

3 个答案:

答案 0 :(得分:1)

实际上刚解决了这个问题的问题

curl http://localhost.com:8983/solr/update/csv?commit=true --data-binary @ sample.csv -H'Content-type:text / plain; charset = utf-8'

但在执行此查询之前,我经常得到必需的id字段错误,我会转到我的查询并提及literal.id = ABC1(一些随机ID是唯一的)然后我仍然得到相同的错误。所以我去了我的schema.xml并删除了字段id和重新启动的solr所需的属性并运行上面的查询仍然得到错误。所以当我在sample.csv中创建一个id列并将其编入索引时,解决方案就出现了。我实际上不喜欢那样!但它奏效了。

答案 1 :(得分:0)

如果您启用了远程流媒体,则需要在请求中将内容类型和文件指定为查询参数。

以下是Solr Wiki

的示例

具体来说,你的查询字符串看起来有点像这样 -

curl http://localhost:8983/solr/update/csv?stream.file=<remote path>/sample.csv&stream.contentType=text/plain;charset=utf-8

请注意,使用远程流式传输时,您需要确保Solr实例可以访问该文件的位置。

答案 2 :(得分:0)

首先更改目录以找到您的csv文件,

cd <file_path>

curl http://localhost:8983/solr/update/csv?commit=true --data-binary @sample.csv -H 'Content-type:text/plain; charset=utf-8'

从终端运行此脚本。我希望解决你的问题。