我想使用PUT请求插入一些记录。我有请求体的JSON字符串和Java Pojo对象。
弹性搜索PUT请求需要将以下格式的主体数据设置为实体。任何人都可以建议我应该如何将我的JSON字符串转换为这种格式?
"{\n" +
"\"user\" : \"kimchy\",\n" +
"\"post_date\" : \"2009-11-15T14:12:12\",\n" +
"\"message\" : \"trying out Elasticsearch\"\n" +"}"
或者请建议替代的好方法来执行此任务。
这是其余客户端的代码。requestBody是请求对象的实例。我已经重写了toString()方法,以便在RequestBody类中将请求参数排列为正确的JSON语法。
RestClient restClient = RestClient.builder(new HttpHost(DataFeederConstants.HTTP_HOST,DataFeederConstants.PORT,DataFeederConstants.PROTOCOL))。build();
Request request = new Request(DataFeederConstants.PUT, DataFeederConstants.END_POINT_URL);
request.setEntity(new NStringEntity(requestBody.toString(), ContentType.APPLICATION_JSON));
request.setEntity(new NStringEntity(DataFeederConstants.JSON_ENTITY_NAME, ContentType.APPLICATION_JSON));
restClient.performRequestAsync(request, new ResponseListener() {
@Override
public void onSuccess(Response response) {
try {
System.out.println(EntityUtils.toString(response.getEntity()));
} catch (ParseException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(Exception exception) {
System.out.println(exception.getMessage());
}
});
输入主体(requestBody.toString())采用正确的JSON数组形式,没有(“\”)斜杠,如上面的示例JSON所示。
发布于 2018-10-09 12:46:14
如果使用的是Java客户端,必须接受Object作为输入,不必以POSTMAN或curl中的方式显式地提供请求体。分享ES客户端代码,以便我们提供更多帮助。
https://stackoverflow.com/questions/-100002859
复制相似问题