当Iam将json对象发布到apache solr 6时,通过java代码索引我得到如下错误:
错误信息如下:
" {"元数据":["误差级"" org.apache.solr.common.SolrException""根误差级"" org.apache.solr.common.SolrException&#34]," MSG":" [DOC =空] 缺少必填字段:id"," code":400}}"
和我的json对象如下:
"_childDocuments_" :[
{
"entityname": "ReportDuplicate"
}
],
"_childDocuments_" :[
{
"entityname": "LinkedReport"
}
],
"_childDocuments_" :[
{
"entityname": "Source"
}
],
"_childDocuments_" :[
{
"entityname": "Literature",
"_childDocuments_" :[
{
"entityname": "Authors"
}
]
}
],
"_childDocuments_" :[
{
"entityname": "AdditionalInformation"
}
],
我发布json对象的java代码如下:
org.apache.http.client.HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost("http://localhost:8983/solr/icsr/update/json?wt=json&commit=true");
StringEntity entity = new StringEntity("{\"add\": { \"doc\":"+value+" }}", "UTF-8");
entity.setContentType("application/json");
post.setEntity(entity);
HttpResponse response = client.execute(post);
HttpEntity httpEntity = response.getEntity();
InputStream in = httpEntity.getContent();
String encoding = httpEntity.getContentEncoding() == null ? "UTF-8" : httpEntity.getContentEncoding().getName();
encoding = encoding == null ? "UTF-8" : encoding;
String responseText = IOUtils.toString(in, encoding);
System.out.println("response Text is " + responseText);
我使用solr 6服务器来索引来自java代码的数据: 因为我在调试时遇到了错误的HTTP请求而且我是solr的新手, 并且在managed-schema.xml文件中没有进行任何更改: thansk提前
答案 0 :(得分:0)
检查您的schema.xml
文件。必须有像
<field name="id" type="string" multiValued="false" required="true" stored="true"/>
您可以设置required=true
,同时索引文档也提供其ID,或者只是制作required=false
,它将100%正常工作!!如果它对你有帮助,请告诉我。
答案 1 :(得分:0)
Solr始终接受格式为2016-06-20T14:54:27.734Z
的日期(这是一个示例)。
仅以YYYY-MM-DDThh:mm:ssZ
这种格式发送日期,其中
YYYY是一年。 MM是月份。 DD是这个月的日子。 hh是24小时制的一天中的小时。 毫米是分钟。 ss是秒。 Z是字面上的&#39; Z&#39;表示该日期的字符串表示形式为UTC的字符
以此格式发送日期。这将100%工作!如果这有助于你,请告诉我。