首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ElasticSearch RestHighLevelClient仅读取选择性字段

使用ElasticSearch RestHighLevelClient仅读取选择性字段
EN

Stack Overflow用户
提问于 2021-02-25 00:14:15
回答 1查看 45关注 0票数 1

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

代码语言:javascript
复制
.....
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来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-25 00:43:41

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

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66354662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档