Example requests
editExample requests
editHere are a couple of examples:
Response response = restClient.performRequest("GET", "/",
Collections.singletonMap("pretty", "true"));
System.out.println(EntityUtils.toString(response.getEntity()));
//index a document
HttpEntity entity = new NStringEntity(
"{\n" +
" \"user\" : \"kimchy\",\n" +
" \"post_date\" : \"2009-11-15T14:12:12\",\n" +
" \"message\" : \"trying out Elasticsearch\"\n" +
"}", ContentType.APPLICATION_JSON);
Response indexResponse = restClient.performRequest(
"PUT",
"/twitter/tweet/1",
Collections.<String, String>emptyMap(),
entity);
The ContentType that you specify for the HttpEntity is important
because it will be used to set the Content-Type header so that Elasticsearch
can properly parse the content. Future releases of Elasticsearch will require this
to be set properly.
Note that the low-level client doesn’t expose any helper for json marshalling and un-marshalling. Users are free to use the library that they prefer for that purpose.
The underlying Apache Async Http Client ships with different
org.apache.http.HttpEntity
implementations that allow to provide the request body in different formats
(stream, byte array, string etc.). As for reading the response body, the
HttpEntity#getContent method comes handy which returns an InputStream
reading from the previously buffered response body. As an alternative, it is
possible to provide a custom
org.apache.http.nio.protocol.HttpAsyncResponseConsumer
that controls how bytes are read and buffered.
The following is a basic example of how async requests can be sent:
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();