繁体   English   中英

从Java向solr添加json数据

[英]Add json data to solr from java

我想使用Java将数据添加到solr 4.0 我有以下数组List<Map<String, Object>> docs = new ArrayList<>(); 我正在使用GSON方法将数组转换为json对象。 我想将此数据提交到solr。 我怎么做? 我读过solrj,但不知道如何使它工作。

使用solrj客户端,您可以创建SolrInputDocument对象,并将其发布到SolrServer实例(无论是HttpSolrServer还是EmbeddedSolrServer)。 SolrInputDocument是一个名称值对集合,它等效于您尝试发布的json。 https://wiki.apache.org/solr/Solrj#Adding_Data_to_Solr所述

如果您确实想将JSON发送到Solr服务器,则可以使用HTTPClient之类的东西将JSON发布到http://solrHost.com:8983/solr/update/json

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("http://solrHost.com:8983/solr/update/json");
StringEntity input = new StringEntity("{\"firstName\":\"Bob\",\"lastName\":\"Williams\"}");
input.setContentType("application/json");
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);

要通过Java索引/添加到solr,请尝试此操作。 Solr使用REST之类的API来操作索引数据。

public void postSolr() {
try{
   DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://localhost:8983/solr/update/json?wt=json&commit=true");
    StringEntity entity  = new StringEntity("{\"add\": { \"doc\": {\"id\": \"26\",\"keys\": \"java,php\"}}}", "UTF-8");
    entity.setContentType("application/json");
    post.setEntity(entity);                
    HttpResponse response = httpClient.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);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}
}

成功发布后的响应:

响应文本为{“ responseHeader”:{“ status”:0,“ QTime”:1352}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM