实现高亮 在上一篇的基础上进行改造 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162@GetMapping(value = "/list2s")public Object getQueryBUilder() { //设置查询方式 MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "Felix"); MultiMatchQueryBuilder matchQueryBuilder1 = QueryBuilders.multiMatchQuery("name", "Felix"); SearchQuery searchQuery = new NativeSearchQueryBuilder() //设置高亮字段 .withHighlightFields(new HighlightBuilder.Field("name") .preTags("<span style='color:red'>") .postTags("</span>")) .withQuery(matchQueryBuilder) //设置分页数据 .withPageable(PageRequest.of(0, 10)) .build(); AggregatedPage<User> users = elasticsearchTemplate.queryForPage(searchQuery, User.class, new SearchResultMapper() { @Override public <T> AggregatedPage<T> mapResults(SearchResponse searchResponse, Class<T> aClass, Pageable pageable) { List<User> result = new ArrayList<>(); SearchHits hits = searchResponse.getHits(); for (SearchHit searchHit : hits) { if (hits.getHits().length <= 0) { return null; } User user = new User(); //设置ID user.setId(Long.parseLong(searchHit.getId())); //设置sex Integer age = (Integer) searchHit.getSourceAsMap().get("age"); user.setAge(age); //设置高亮的name HighlightField nameHighlight = searchHit.getHighlightFields().get("name"); if (nameHighlight != null) { user.setName(nameHighlight.fragments()[0].toString()); } else { //没有高亮的name String name = (String) searchHit.getSourceAsMap().get("name"); user.setName(name); } //设置高亮的address HighlightField addressHighlight = searchHit.getHighlightFields().get("description"); if (addressHighlight != null) { user.setName(addressHighlight.fragments()[0].toString()); } else { //没有高亮的address String description = (String) searchHit.getSourceAsMap().get("description"); user.setDescription(description); } result.add(user); } if (result.size() > 0) { return new AggregatedPageImpl<>((List<T>) result); } return null; } }); return users;}