ElasticSearch Java API查询并返回单列而不是整个json文档

马声

在elaticsearch中使用Java API搜索时,我只想检索一列。当前,当我使用Java API查询时,它会返回整个记录,如下所示:[{_id=123-456-7890, name=Wonder Woman, gender=FEMALE}, {_id=777-990-7890, name=Cat Woman, gender=FEMALE}]

上面的记录正确匹配th中显示的搜索条件。如下面的代码所示:

        List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();


        SearchRequestBuilder srb = client.prepareSearch("heros")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
        MatchQueryBuilder mqb;

        mqb = QueryBuilders.matchQuery("name", "Woman");
        srb.setQuery(mqb);
        SearchResponse response = srb.execute().actionGet();
        long totalHitCount = response.getHits().getTotalHits();

        System.out.println(response.getHits().getTotalHits());

        for (SearchHit hit : response.getHits()) {          
            result.add(hit.getSource());
        }

        System.out.println(result);

我只希望返回一列。如果我搜索名称,我只想将全名放回列表中:"Wonder Woman", "Cat Woman"而不是每个名称的整个json记录。如果您认为我需要遍历resultJava中的地图列表,请提出在这种情况下如何执行此操作的示例。

马声

我想到了。

    List<String> valuesList= new ArrayList<String>();
            for (SearchHit hit : response.getHits()) {                      
    result.add(hit.getSource());
    valuesList.add(hit.getSource().get("name").toString());         
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章