我想solr 4.0
使用 java 添加数据。我有以下数组List<Map<String, Object>> docs = new ArrayList<>();
。我正在使用GSON
方法将数组转换为 json 对象。我想将这些数据提交给 solr。我怎么做?我读过solrj但不知道如何让它工作。
问问题
8813 次
2 回答
5
使用 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);
于 2013-02-18T06:57:05.633 回答
2
要通过 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}}
于 2015-04-29T10:45:57.313 回答