Map ElasticSearch LowLevelRestClient's Response для Бина - PullRequest
0 голосов
/ 29 марта 2019

Я использую Elastic LowLevelRestClient для взаимодействия с моим экземпляром эластика, когда я запрашиваю эластик с помощью поискового запроса, он возвращает ответ, который обернут как HttpEntity.

Согласно документации Эластичные ответы на чтение Класс EntityUtils Apache предоставляет способ для преобразования этого HttpEntity в String, который дает мне ответ ниже.Я просто хочу отобразить этот ответ на соответствующий объект.

Мой фрагмент кода:

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"
        }
      }
    ]
  }
}

Мой вопрос прост

Предоставляет ли ElasticSearch такой компонент, который может представлять этот ответ, или я должен создать свой собственный CustomBean.

1 Ответ

1 голос
/ 29 марта 2019

Вы можете использовать SearchResponse Объект для достижения этой цели.

Если вы используете метод search(SearchRequest), он возвращает вам объект SearchResponse (включая аггс).

Или вы также можете сделать 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 Forum

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...