elasticsearchClient返回的SearchResponse<T>如何转换成List<T>
时间: 2023-12-08 22:06:38 浏览: 33
可以通过以下步骤将 `SearchResponse<T>` 转换为 `List<T>`:
1. 从 `SearchResponse<T>` 中获取 `SearchHits` 对象,它代表了搜索结果中的所有命中项。
2. 从 `SearchHits` 中获取 `SearchHit` 对象的数组,其中每个 `SearchHit` 对象代表了一条命中项。
3. 遍历 `SearchHit` 数组,从每个 `SearchHit` 对象中获取 `_source` 字段,它包含了命中项的实际数据。
4. 将 `_source` 字段转换为 `T` 类型的对象,将其添加到 `List<T>` 中。
下面是一个简单的示例代码:
```java
SearchResponse<T> response = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT);
List<T> resultList = new ArrayList<>();
SearchHits hits = response.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
T source = objectMapper.convertValue(hit.getSourceAsMap(), T.class);
resultList.add(source);
}
return resultList;
```
其中,`objectMapper` 是一个已经初始化好的 `ObjectMapper` 对象,用于将 `_source` 字段转换为 `T` 类型的对象。