elasticsearch - 将 Elasticsearch 结果转换为 POJO

标签 elasticsearch spring-boot spring-data-elasticsearch

我有一个使用 spring-data-elasticsearch 库的项目。我的系统返回了结果,但我想知道如何以域 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();

非常感谢任何帮助。

最佳答案

一种选择是使用 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...
});

关于elasticsearch - 将 Elasticsearch 结果转换为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472556/

相关文章:

elasticsearch - Elasticsearch比较两个字段

elasticsearch - 如何在Elasticsearch Spring数据的嵌套字段中添加分析器?

elasticsearch - 嵌套 ElasticSearch 查询导致项目过多

elasticsearch - 在 Elasticsearch 中标记时从文本中删除符号

spring-boot - Thymeleaf 和 Spring 引导中的错误处理

java - 无法使用 Spring Boot 2 和 Tomcat 8.5.38(非嵌入式 Tomcat)获得 JNDI 连接

elasticsearch - 在代码中生成查询主体

elasticsearch - ElasticSearch Scroll API连接时间

java - Spring Batch 挂起,没有输出