在 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 记录。如果您认为我需要遍历result
java 中的地图列表,请提出一个在这种情况下如何执行此操作的示例。