[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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理