当前位置: 首页 > 知识库问答 >
问题:

将弹性搜索结果转换为POJO

吴展
2023-03-14

我有一个使用spring数据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();

非常感谢您的帮助。

共有1个答案

闾丘霖
2023-03-14

一个选项是使用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...
});
 类似资料:
  • 我使用的是spring数据elasticsearch(4.0版)。现在,我需要将rest高级客户端的搜索结果转换为POJO对象。 我会使用杰克逊图书馆的ObjectMapper。我相信有更好的方法来做到这一点。 Spring data elasticsearch now(4.0版)使用MappingElasticsearchConverter。不幸的是,我不知道如何做到这一点-我没有看到任何相关文

  • 我已经使用ES一段时间了,但今天不起作用。我重新创建了docker compose(smt可以在那里吗?),以下是我在ES中获得的数据: 编辑:这是我的输入(这里我有\u source=False) 架构: 具有“全部匹配”查询的文档(部分): 现在查询: 退货 知道问题出在哪里吗? 编辑:使用curl查询{“query”:{“bool”:{“must”:[{“match”:{“integer”:

  • 目前,我正在将弹性搜索命中映射到POJO,然后再次将其保存在列表中。 是否有一种方法可以直接将弹性结果映射到内容POJO列表,而无需从Search Hit迭代它。

  • 我已经完成了名称索引。它包含椅子、椅子等数据。 当我尝试用“cha”搜索时,它不会返回任何椅子。这是返回“毛毯”,我期待的文件有椅子。 下面是我的代码: 搜索请求: 搜索响应: } 映射: 我该怎么解决这个问题? 谢谢,Sri

  • 我正在使用批量请求执行弹性搜索完整索引。我在索引过程中遇到了一个问题,结果是空的。由于我正在完整索引期间删除索引,因此如何处理这种情况。 我已经完成了以下步骤: 删除索引 创建索引 创建映射 批量请求 索引属性和映射: } 我有大约7.5万份文件。 谢谢,Sree。

  • 我需要对以搜索词开头的搜索结果进行优先级排序。我用了“匹配短语前缀”。我用了“匹配短语前缀”。但它不起作用。 细节: > 质疑 结果