2017-01-03 9 views
0

Javaプログラムを使用してsolrにアクセスし、それを使用してレコードを追加/更新しようとしています(本質的にHttpUrlConnectionを作成し、curlを使用して投稿jsonデータ)。私は私のJavaプログラムで応答を受け取ることができるはずです。 私はファイルが見つかりませんエラーを取得していますし、それをデバッグ中にはかなり失われています。ここでSolrで追加/更新する方法

は私のコードのアイデアは、Javaプログラムを使ってSolrのデータを更新することである

String url = "http://localhost:8983/solr/jcg/update?stream.body"; 
URL obj = new URL(url); 
HttpURLConnection conn = (HttpURLConnection) obj.openConnection(); 
conn.setRequestProperty("Content-Type:", "application/json"); 
conn.setRequestProperty("Accept", "*/*"); 
conn.setDoOutput(true); 
conn.setRequestMethod("POST"); 

String data ="{\"id\":\"978-0641723445\",\"apple_t\":\"set\":\"abc\"}"; 
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); 
out.write(data); 

out.close(); 
System.out.println(url+data); 
new InputStreamReader(conn.getInputStream()); 
System.out.println("input"+conn.getInputStream()); 
System.out.println(conn.getContent()); 
} catch (Exception e) { 
e.printStackTrace(); 

} 

の一部です。任意の他のアプローチ/入力は

答えて

0

HttpURLConnectionのバージョンsolrjを使用して

try{  
    String url = "http://localhost:8983/solr/jcg/update/json?commit=true"; 
    URL obj = new URL(url); 
    HttpURLConnection conn = (HttpURLConnection) obj.openConnection(); 
    conn.setRequestProperty("Content-Type", "application/json"); 
    conn.setRequestProperty("Accept", "*/*"); 
    conn.setDoOutput(true); 
    conn.setRequestMethod("POST"); 
    String data ="[{\"id\":\"978-0641723445\",\"apple_t\":{\"set\":\"abc\"}}]"; 
    OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); 
    out.write(data); 
    out.close(); 
    System.out.println("input: "+conn.getInputStream()); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

歓迎されています。私はバージョン5.3.0を使用しました。

を更新、既存のドキュメントに

String urlString = "http://localhost:8983/solr/jcg"; 
SolrClient client = new HttpSolrClient(urlString); 
SolrInputDocument doc1 = new SolrInputDocument(); 
doc1.addField("id", "new-document-id"); 
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); 
docs.add(doc1); 
client.add(docs); 
client.commit(); 
client.close(); 

String urlString = "http://localhost:8983/solr/jcg"; 
SolrClient client = new HttpSolrClient(urlString); 
SolrInputDocument doc1 = new SolrInputDocument(); 
Map<String, String> operations = new HashMap<String, String>(); 
operations.put("set", "abc"); 
doc1.addField("id", "978-0641723445"); 
doc1.addField("apple_t", operations); 
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); 
docs.add(doc1); 
client.add(docs); 
client.commit(); 
client.close(); 
+0

を新規ドキュメントの追加提案をいただき、ありがとうございます。私はまだそれを試してhavent。同じ方法論を使用して特定のレコード(部分的な更新)を更新することは可能ですか? – GermanShepherd

+0

私は答えを更新しました、それがあなたを助けてくれることを願っています。 – user6904265

+0

ClusterStateがリーダー(http:// host:8983/solr/collection)であると言っていますが、ローカルではそうは思わないという例外が発生しています。リクエストはnullから来ました – GermanShepherd

関連する問題