Я использую Elastic Лоулевелрестклиент для взаимодействия с моим эластичным экземпляром, когда я запрашиваю эластичность с помощью поискового запроса, он возвращает ответ, который завернут как HttpEntity.
В соответствии с документацией класса Эластичные ответы при чтении EntityUtils Apache предоставляет способ преобразовать этот HttpEntity в строку, которая дает мне ответ ниже. Я просто хочу сопоставить этот ответ с соответствующим объектом.
Мой фрагмент кода:
Request request = new Request("GET", "/neeraj_party/_search");
request.setJsonEntity(searchQuery);
Response response = lowLevelClient.performRequest(request);
String responseBody = EntityUtils.toString(response.getEntity());
ResponseBody выглядит так
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 32.986195,
"hits": [
{
"_index": "neeraj_party",
"_type": "party",
"_id": "28588489",
"_score": 32.986195,
"_source": {
"name": "MUST HK LTD",
"city_nm": "郑州",
"@timestamp": "2019-03-23T18:28:07.305Z",
"type": "json",
"legal_nm": "MUST HK Ltd",
"gr_id": "28588489",
"path": "/ssd/sdds",
"address": "郑州",
"state_province_cd": "180",
"country_iso2_cd": "CN",
"host": "neeraj.com",
"postal_cd": "450000",
"@version": "1"
}
}
]
}
}
Мой вопрос прост
Do ElasticSearch provide any such bean which can represent this response, or Should I create my own CustomBean.




Для этого вы можете использовать SearchResponse Object.
Если вы используете метод search(SearchRequest), он возвращает вам объект SearchResponse (включая aggs).
Или вы также можете сделать SearchResponse из этой строки, используя этот метод.
public static SearchResponse getSearchResponseFromJson(String jsonResponse){
try {
NamedXContentRegistry registry = new
NamedXContentRegistry(DashboardCuke.getDefaultNamedXContents());
XContentParser parser =
JsonXContent.jsonXContent.createParser(registry, jsonResponse);
return SearchResponse.fromXContent(parser);
}catch (IOException e) {
System.out.println("exception " + e);
}catch (Exception e){
System.out.println("exception " + e);
}
return new SearchResponse();
}
Я получил эту информацию отсюда: Форум ElasticSearch
это работает с некоторой модификацией, я не знаю, что такое
DashboardCuke, но когда я передаю пустой ArrayList в конструкторNamedXContentRegistry, этот код работает нормально.