1、引入配置
springboot环境
org.springframework.boot
spring-boot-starter-parent
2.3.2.RELEASE
引入es配置
org.springframework.boot
spring-boot-starter-data-elasticsearch
2、在service方法添加高亮代码
@Slf4j
@Service
public class PostServiceImpl extends ServiceImpl
implements IPostService {
@Autowired
private ElasticSearchPostMapper elasticSearchPostMapper;
@Autowired
private ElasticsearchRestTemplate elasticsearchTemplate;
@Override
public List searchInES(PostDto dto) {
//根据一个值查询多个字段 并高亮显示 这里的查询是取并集,即多个字段只需要有一个字段满足即可
//需要查询的字段
BoolQueryBuilder boolQueryBuilder = QueryB服务器托管网uilders.boolQuery()
// .should(QueryBuilders.matchQuery("content", dto.getContent()))
.should(QueryBuilders.matchQuery("content", dto.getContent()));
//构建高亮查询
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQueryBuilder)
.withHighlightFields(
new HighlightBuilder.Field("content"))
.withHighlightBuilder(new HighlightBuilder().preTags("").postTags(""))
.build();
//查询
SearchHits search = elasticsearchTemplate.search(searchQuery, PostIndex.class);
List> searchHits = search.getSearchHits();
//设置一个最后需要返回的实体类集合
List list = new ArrayList();
//遍历返回的内容进行处理
for (Search服务器托管网Hit searchHit : searchHits) {
//高亮的内容
Map> highlightFields = searchHit.getHighlightFields();
//将高亮的内容填充到content中
searchHit.getContent().setContent(highlightFields.get("content") == null ? searchHit.getContent().getContent() : highlightFields.get("content").get(0));
// searchHit.getContent().setInfo(highlightFields.get("info") == null ? searchHit.getContent().getInfo() : highlightFields.get("info").get(0));
//放到实体类中
list.add(searchHit.getContent());
}
return list;
}
}
以上为作者在构建es高亮查询所总结的内容,如果有什么问题,欢迎在评论下方留言
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
背景 前段时间业务研发反馈说是他的应用内存使用率很高,导致频繁的重启,让我排查下是怎么回事; 在这之前我也没怎么在意过这个问题,正好这次排查分析的过程做一个记录。 首先我查看了监控面板里的 Pod 监控: 发现确实是快满了,而此时去查看应用的 JVM 占用情况…