gpt4 book ai didi

java - Elastic 搜索结果到 POJO

转载 作者:行者123 更新时间:2023-12-01 16:20:29 24 4
gpt4 key购买 nike

我正在使用 spring-data-elasticsearch (版本 4.0)。现在我需要将搜索结果从高级客户端转换为 POJO 对象。

我会使用 Jackson 库中的 ObjectMapper。我确信有更好的方法可以做到这一点。

Spring-data-elasticsearch 现在(从 4.0 开始)使用 MappingElasticsearchConverter。不幸的是,我不知道如何实现这一点 - 我没有看到任何相关文档。

实体

@Document(indexName="addresses")
public class Address {

@Id
private String uam;

@Field
private String street;

....
}

我只需要将 SearchHits 转换为地址实体

@SpringBootTest
@RunWith(SpringRunner.class)
@ActiveProfiles(profiles = "dev")
public class TestElasticSearch {


@Autowired
private RestHighLevelClient highLevelClient;

@Test
void convertToPojo() throws Exception {
SearchRequest searchRequest = new SearchRequest();
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

SearchHit[] hits = searchResponse.getHits().getHits();

Arrays.stream(hits).map(hit -> hit.toString()).forEach(System.out::println);
}

最佳答案

SearchHits 类扩展了 Streamable 类,因此如果您像 leiblix 所说的那样使用 ElasticsearchOperations,您甚至不需要对其调用 stream()

    public <T> List<T> search(Query query, Class<T> clazz) {
return elasticsearchOperations.search(query, clazz).map(SearchHit::getContent).toList();
}

关于java - Elastic 搜索结果到 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62298633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com