如何在搜索API中排除源字段?

时间:2020-04-20 12:59:00

标签: java elasticsearch kotlin

Elasticsearch Java High Level REST ClientGET API提供了一种控制来获取_source的哪些字段的方法。

val request = GetRequest(index)
    .id(id)
    .fetchSourceContext(FetchSourceContext(true, includedFields, excludedFields))

elasticClient.get(request, RequestOptions.DEFAULT)

如何使用Search APIs实现这一目标?

例如,以下搜索请求:

val source = SearchSourceBuilder()
source.query(QueryBuilders.matchAllQuery())
val request = SearchRequest(index)
    .source(source)
elasticClient.search(request, RequestOptions.DEFAULT)

1 个答案:

答案 0 :(得分:1)

请参阅this from official ES doc

此方法还接受一个或多个通配符模式的数组,以更细粒度的方式控制要包含或排除的字段:

代码块

String[] includeFields = new String[] {"title", "innerObject.*"};
String[] excludeFields = new String[] {"user"};
sourceBuilder.fetchSource(includeFields, excludeFields);

类似地获得您已经提到的API,您可以提供一系列 includeFieldsexcludeFields,以控制从_source个字段中提取字段。