2017-08-02 16 views
0

私はspring-data-elasticsearchライブラリを使用したプロジェクトを持っています。私のシステムは結果を返すようになっていますが、自分のドメインPOJOクラスの形で結果を得る方法が不思議でした。弾性検索結果をPOJOに変換する

私はこれを達成する方法についてはあまりにも多くのドキュメントを見ていないが、私はグーグルグーグルでなければならない正しい質問がわからない。

現在のところ、私のコードはこのように見え、私のテストでは、正しい結果が得られますが、POJOとしては取得されません。

QueryBuilder matchQuery = QueryBuilders.queryStringQuery(searchTerm).defaultOperator(QueryStringQueryBuilder.Operator.AND); 

    Client client = elasticsearchTemplate.getClient(); 

    SearchRequestBuilder request = client 
      .prepareSearch("mediaitem") 
      .setSearchType(SearchType.QUERY_THEN_FETCH) 
      .setQuery(matchQuery) 
      .setFrom(0) 
      .setSize(100) 
      .addFields("title", "description", "department"); 
    System.out.println("SEARCH QUERY: " + request.toString()); 

    SearchResponse response = request.execute().actionGet(); 
    SearchHits searchHits = response.getHits(); 
    SearchHit[] hits = searchHits.getHits(); 

ご協力いただきありがとうございます。

答えて

2

1つの方法は、jackson-databindを使用してJSONを検索ヒットからPOJOにマッピングすることです。例えば

ObjectMapper objectMapper = new ObjectMapper(); 
SearchHit[] hits = searchHits.getHits(); 
Arrays.stream(hits).forEach(hit -> { 
    String source = hit.getSourceAsString(); 
    MediaItem mediaItem = objectMapper.readValue(source, MediaItem.class); 
    // Use media item... 
}); 
関連する問題