[JAVA]elasticsearch 在查询的时候返回指定的字段值
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
方法一
在spring-data-elasticsearch,即springboot自带支持的es组件中
可以这样使用,同时可以进行高亮设置等,其他功能可以自行尝试更多的with语句。
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.multiMatchQuery(q, "title", "content"));
PageRequest pageRequest = PageRequest.of(page - 1, pagesize);
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQuery)
.withSourceFilter(new SourceFilter() {
@Override
public String[] getIncludes() {
return new String[]{"title","date","author"};
}
@Override
public String[] getExcludes() {
return new String[]{"content"};
}
})
.withIndices("file_index")
.withTypes("file")
.withHighlightFields(
new HighlightBuilder.Field("title").preTags("<span style=\"color:red\">").postTags("</span>"),
new HighlightBuilder.Field("content").preTags("<span style=\"color:red\">").postTags("</span>"))
.withPageable(pageRequest)
.build();
//然后使用elasticsearchTemplate进行查询即可
方法二
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(
QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("dimension", RecommendStrategyDimension.Customize.getValue()))
.must(QueryBuilders.matchQuery("userCodes", userCode))
);
queryBuilder.should(
QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("dimension", RecommendStrategyDimension.UserSource.getValue()))
.must(QueryBuilders.matchQuery("userSource", userSource))
);
BoolQueryBuilder filterBuilder = QueryBuilders.boolQuery();
filterBuilder.must(QueryBuilders.matchQuery("appId", appId));
filterBuilder.must(QueryBuilders.matchQuery("module", module));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withFilter(filterBuilder)
.withQuery(queryBuilder)
.withPageable(PageRequest.of(0, 1, Sort.by("createTime").descending()))
.withFields("id", "novelIds", "position")
.build();
Page<RecommendStrategyEo> page = this.recommendStrategyRepository.search(searchQuery);

浙公网安备 33010602011771号