Java rest弹性搜索json文档

时间:2017-04-21 13:22:49

标签: java json elasticsearch

我正在尝试使用java rest将json文档发送到elasticsearch。

我只需要知道如何初始化变量" entities [i]"并将json文档放入其中。我尝试了很多方法,但仍然没有得到有用的东西。

这是来自elastticsearch网站的代码:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/_example_requests.html

int numRequests = 10;
final CountDownLatch latch = new CountDownLatch(numRequests);

for (int i = 0; i < numRequests; i++) {
    restClient.performRequestAsync(
        "PUT",
        "/twitter/tweet/" + i,
        Collections.<String, String>emptyMap(),
        //assume that the documents are stored in an entities array
        entities[i],
        new ResponseListener() {
            @Override
            public void onSuccess(Response response) {
                System.out.println(response);
                latch.countDown();
            }

            @Override
            public void onFailure(Exception exception) {
                latch.countDown();
            }
        }
    );
}

//wait for all requests to be completed
latch.await();

谢谢你

1 个答案:

答案 0 :(得分:0)

    int numRequests = 1;
    final CountDownLatch latch = new CountDownLatch(numRequests);

    HttpEntity entity = new NStringEntity(
            "{\n" +
                    "    \"user\" : \"kimchy\",\n" +
                    "    \"post_date\" : \"2009-11-15T14:12:12\",\n" +
                    "    \"message\" : \"trying out Elasticsearch\"\n" +
                    "}", ContentType.APPLICATION_JSON);

    List<HttpEntity> entities = asList(entity);

    for (int i = 0; i < numRequests; i++) {
        restClient.performRequestAsync(
                "PUT",
                "/twitter/tweet/" + i,
                Collections.<String, String>emptyMap(),
                entities.get(i),
                new ResponseListener() {
                    @Override
                    public void onSuccess(Response response) {
                        System.out.println(response);
                        latch.countDown();
                    }

                    @Override
                    public void onFailure(Exception exception) {
                        latch.countDown();
                    }
                }
        );
    }

    latch.await();

实体是一个HttpEntity类型。你需要在列表中创建HttpEntity对象列表并使用它们。