use of co.elastic.clients.transport.endpoints.BooleanResponse in project elasticsearch-java by elastic.
the class RequestTest method errorResponse.
@Test
public void errorResponse() throws Exception {
BooleanResponse exists = client.exists(_0 -> _0.index("doesnotexist").id("reallynot"));
assertFalse(exists.value());
ElasticsearchException ex = assertThrows(ElasticsearchException.class, () -> {
GetResponse<String> response = client.get(_0 -> _0.index("doesnotexist").id("reallynot"), String.class);
});
assertEquals("es/get", ex.endpointId());
assertEquals(404, ex.status());
assertEquals("index_not_found_exception", ex.error().type());
assertEquals("doesnotexist", ex.error().metadata().get("index").to(String.class));
ExecutionException ee = assertThrows(ExecutionException.class, () -> {
ElasticsearchAsyncClient aClient = new ElasticsearchAsyncClient(client._transport());
GetResponse<String> response = aClient.get(_0 -> _0.index("doesnotexist").id("reallynot"), String.class).get();
});
ex = ((ElasticsearchException) ee.getCause());
assertEquals("es/get", ex.endpointId());
assertEquals(404, ex.status());
assertEquals("index_not_found_exception", ex.error().type());
}
use of co.elastic.clients.transport.endpoints.BooleanResponse in project elasticsearch-java by elastic.
the class RequestTest method testDataIngestion.
@Test
public void testDataIngestion() throws Exception {
String index = "ingest-test";
// Create an index
CreateIndexResponse createIndexResponse = client.indices().create(b -> b.index(index));
assertEquals(index, createIndexResponse.index());
// Check that it actually exists. Example of a boolean response
BooleanResponse existsResponse = client.indices().exists(b -> b.index(index));
assertTrue(existsResponse.value());
// Ingest some data
AppData appData = new AppData();
appData.setIntValue(1337);
appData.setMsg("foo");
String docId = client.index(b -> b.index(index).id(// test with url-unsafe string
"my/Id").document(appData).refresh(// Make it visible for search
Refresh.True)).id();
assertEquals("my/Id", docId);
// Check auto-created mapping
GetMappingResponse mapping = client.indices().getMapping(b -> b.index(index));
assertEquals(Property.Kind.Long, mapping.get("ingest-test").mappings().properties().get("intValue")._kind());
// Query by id
AppData esData = client.get(b -> b.index(index).id(docId), AppData.class).source();
assertEquals(1337, esData.getIntValue());
assertEquals("foo", esData.getMsg());
// Query by id a non-existing document
final GetResponse<AppData> notExists = client.get(b -> b.index(index).id("some-random-id"), AppData.class);
assertFalse(notExists.found());
assertNull(notExists.source());
// Search
SearchResponse<AppData> search = client.search(b -> b.index(index), AppData.class);
long hits = search.hits().total().value();
assertEquals(1, hits);
esData = search.hits().hits().get(0).source();
assertEquals(1337, esData.getIntValue());
assertEquals("foo", esData.getMsg());
RequestItem item = RequestItem.of(_1 -> _1.header(_2 -> _2.index("test")).body(_2 -> _2.size(4)));
// MSearch: 1st search on an existing index, 2nd one on a non-existing index
final MsearchResponse<AppData> msearch = client.msearch(_0 -> _0.searches(_1 -> _1.header(_3 -> _3.index(index)).body(_3 -> _3.query(_4 -> _4.matchAll(_5 -> _5)))).searches(_1 -> _1.header(_3 -> _3.index("non-existing")).body(_3 -> _3.query(_4 -> _4.matchAll(_5 -> _5)))), AppData.class);
assertEquals(2, msearch.responses().size());
assertTrue(msearch.responses().get(0).isResult());
assertEquals(1, msearch.responses().get(0).result().hits().hits().size());
assertTrue(msearch.responses().get(1).isFailure());
assertEquals(404, msearch.responses().get(1).failure().status());
}
use of co.elastic.clients.transport.endpoints.BooleanResponse in project elasticsearch-java by elastic.
the class RestClientTransport method decodeResponse.
private <ResponseT> ResponseT decodeResponse(int statusCode, @Nullable HttpEntity entity, Response clientResp, Endpoint<?, ResponseT, ?> endpoint) throws IOException {
if (endpoint instanceof BooleanEndpoint) {
BooleanEndpoint<?> bep = (BooleanEndpoint<?>) endpoint;
@SuppressWarnings("unchecked") ResponseT response = (ResponseT) new BooleanResponse(bep.getResult(statusCode));
return response;
} else if (endpoint instanceof JsonEndpoint) {
@SuppressWarnings("unchecked") JsonEndpoint<?, ResponseT, ?> jsonEndpoint = (JsonEndpoint<?, ResponseT, ?>) endpoint;
// Successful response
ResponseT response = null;
JsonpDeserializer<ResponseT> responseParser = jsonEndpoint.responseDeserializer();
if (responseParser != null) {
// Expecting a body
if (entity == null) {
throw new TransportException("Expecting a response body, but none was sent", endpoint.id(), new ResponseException(clientResp));
}
InputStream content = entity.getContent();
try (JsonParser parser = mapper.jsonProvider().createParser(content)) {
response = responseParser.deserialize(parser, mapper);
}
;
}
return response;
} else {
throw new TransportException("Unhandled endpoint type: '" + endpoint.getClass().getName() + "'", endpoint.id());
}
}
Aggregations