elaticsearch で Java API を使用して検索しているときに、1 つの列だけを取得したいと考えています。現在、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);
1列だけ返してほしい。名前を検索すると、完全な名前をリストに戻したいだけです"Wonder Woman", "Cat Woman"
。それぞれのjsonレコード全体だけではありません。Java でマップのリストを反復処理する必要があると思われるresult
場合は、この場合の方法の例を提案してください。