我正在使用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来实现这一点。
发布于 2021-02-25 00:43:41
您需要使用source filtering并传递您想要获取的字段名称数组,根据您的示例添加的以下请求将只获取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);https://stackoverflow.com/questions/66354662
复制相似问题