2016-06-23 6 views
0

場合ApacheのSolrの6へのIAM転記JSONオブジェクト以下のようにエラーを取得するJavaコードはIAMを介して索引付けしつつ:"MSG": "[DOC = NULL]必須フィールド欠落:ID"、 "コード":400}

エラーメッセージは以下の通りである:

「{」メタデータ「:[」エラークラス「 『org.apache.solr.common.SolrException』、 『ルート・エラー・クラス』、」org.apache .solr.common.SolrException "]、" MSG ":" [DOC = NULL] 欠落必須フィールド:ID " "コード":400}}"

と私のJSONオブジェクトとしてあります以下:JSONオブジェクトを投稿する

"_childDocuments_" :[  
    { 
     "entityname": "ReportDuplicate" 
    } 
    ], 
"_childDocuments_" :[  
    { 
     "entityname": "LinkedReport" 
    } 
    ],  

"_childDocuments_" :[  
    { 
     "entityname": "Source" 
    } 
    ], 
"_childDocuments_" :[ 
    { 
     "entityname": "Literature", 
"_childDocuments_" :[ 
     { 
      "entityname": "Authors" 
     } 
     ] 
    } 
    ], 
"_childDocuments_" :[ 

    { 
     "entityname": "AdditionalInformation" 
    } 
    ], 

そして、私のJavaコードは以下の通りです:

インデックスにJavaコードからのデータのSolr 6サーバーを使用して
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); 

イム:イムgeeting悪い​​HTTPリクエストしばらくとして をデバッグとIm new to solr managed-schema.xmlファイルに変更が加えられていません: 先週に

答えて

0

Solrは常に日付を2016-06-20T14:54:27.734Zの形式で受け取ります(例)。 この種の形式のデータはYYYY-MM-DDThh:mm:ssZとなります。

YYYYは年です。 MMは月です。 DDはその月の日です。 hhは24時間制の時刻です。 mmは分です。秒は秒です。 Zは、日付の文字列表現がUTCであることを示すリテラル 'Z'文字です

この形式で日付を送信します。これは100%働くでしょう!これがあなたを助けてくれたら教えてください。

+0

ええ、それは私のために働いてくれました.. –

+0

私はちょうど1つの答えを受け入れることができます。私は両方を受け入れることを試みたが、私はcouldnt。 –

+0

いいえ、私の悪い:)私は忘れて、それは別の答えです。私の側からの間違い –

0

schema.xmlファイルを確認してください。あなたは文書もそのIDを提供し、または単にrequired=falseを作るのいずれかのインデックスを作成しながら、それは100%動作する、required=trueを設定することができている

<field name="id" type="string" multiValued="false" required="true" stored="true"/> 

のような宣言が存在しなければなりません!それがあなたを助けるかどうか私に教えてください。

+0

私はrequired = trueを設定しました。Apache solrsの管理ページで次のエラーが発生しました:schema:org.xml.sax.SAXParseException; systemId:solrres:/ managed-schema; lineNumber:2; columnNumber:6; 「[xX] [mM] [lL]」に一致する処理命令のターゲットは許可されません。 –

+0

インデックスにIDを送信していますか? –

+0

必須= trueを設定する場合は、インデックス作成のためにjsonの「id」フィールドを送信していることを確認してください。 –

関連する問題