Сам себе отвечу.
Дополню, есть еще jest client -
https://www.elastic.co/blog/found-java-clients-for...
Но к нему нужно тащить официального тtransport клиента, в основном из-за QueryBuilders, что в общем неплохо (я было начал сам писать классы для query-маппинга)
----
В общем, выдираем все из jackson приблизительно так
String query = "{\n" +
" \"query\": { \"match_all\": {}\n" +
" }" +
"}\n" +
"\n" +
"";
Response response = client.performRequest("GET","/offers_v1/offer/_search", new Hashtable<>(),
new StringEntity(query));
HttpEntity entity = response.getEntity();
ObjectMapper ob = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ResponseHits responseHits = ob.readValue(entity.getContent(), ResponseHits.class);
List<Hit> hits = responseHits.getHits().getHits();
return Results.html("index").put("hits", hits);
Для этого создаем следующие классы ResponseHits. Hits, Hit
public class ResponseHits {
private Hits hits;
}
public class Hits {
private List<Hit> hits;
}
public class Hit {
@JsonProperty(value = "_index")
private String index;
@JsonProperty(value = "_type")
private String type;
@JsonProperty(value = "_id")
private String id;
@JsonProperty(value = "_score")
private Double score;
@JsonProperty(value = "_source")
private Hashtable<String, Object> source;
}