仅使用ElasticSearch RestHighLevelClient获取选择性字段



我使用RestHighLevelClient从ES存储中获取文档。

.....
RestHighLevelClient client = new RestHighLevelClient(restClientBuilder);
final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(60L));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.size(100);
sourceBuilder.query(QueryBuilders.matchQuery("id", id));
SearchRequest searchRequest = new SearchRequest("my-index");
searchRequest.scroll(scroll);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

目前,这将获取所有字段,但我想只获取一个特定的字段。

如何使用RestHighLevelClient.

您需要使用源过滤并传递您想要获取的字段名称数组,下面根据您的示例添加的请求将只获取title字段,并排除响应中的其他所有内容。

RestHighLevelClient client = new RestHighLevelClient(restClientBuilder);
final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(60L));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.size(100);
String[] includeFields = new String[] {"title"};
sourceBuilder.fetchSource(includeFields, null);
sourceBuilder.query(QueryBuilders.matchQuery("id", id));
SearchRequest searchRequest = new SearchRequest("my-index");
searchRequest.scroll(scroll);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

最新更新