首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决弹性搜索Java REST客户端放置操作设置实体数据输入?

如何解决弹性搜索Java REST客户端放置操作设置实体数据输入?
EN

Stack Overflow用户
提问于 2018-10-09 03:07:11
回答 1查看 0关注 0票数 0

我想使用PUT请求插入一些记录。我有请求体的JSON字符串和Java Pojo对象。

弹性搜索PUT请求需要将以下格式的主体数据设置为实体。任何人都可以建议我应该如何将我的JSON字符串转换为这种格式?

代码语言:javascript
复制
"{\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();

代码语言:javascript
复制
    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所示。

EN

回答 1

Stack Overflow用户

发布于 2018-10-09 12:46:14

如果使用的是Java客户端,必须接受Object作为输入,不必以POSTMAN或curl中的方式显式地提供请求体。分享ES客户端代码,以便我们提供更多帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档