es高亮搜索java_ES检索服务搜索结果高亮

本文介绍了如何在Java中利用ElasticsearchTemplate实现ES的高亮搜索功能。首先,通过ElasticsearchTemplate注入并构建查询对象,指定高亮字段。然后,自定义ResultMapper类以支持高亮,将ES文档转换为带有高亮信息的Java对象。最后,展示了一个包含高亮结果的KnowledgeDO对象示例。
摘要由CSDN通过智能技术生成

一、前言

在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然。我们可以通过 ES 提供的高亮功能实现此效果。

二、代码实现

前文查询是通过一个继承 ElasticsearchRepository 的接口实现的,但是如果要实现高亮,这种方式就满足不了了,这里我们需要通过 ElasticsearchTemplate 来完成。

注入 ElasticsearchTemplate

① ElasticsearchTemplate 类简介

public class ElasticsearchTemplate implementsElasticsearchOperations, ApplicationContextAware {

...省略其余部分...

}

从上述源码中可以看到 ElasticsearchTemplate 实现了 ApplicationContextAware 接口,表明这个类是被 Spring 管理的,可以直接注入使用。

② 业务实现类注入 ElasticsearchTemplate

@Autowiredprivate ElasticsearchTemplate elasticsearchTemplate;

查询对象指定高亮字段

在构建查询对象时需要指定高亮字段,通过 withHighlightFields 方法设置。

privateSearchQuery getKnowledgeSearchQuery(KnowledgeSearchParam param) {

Pageable pageable= PageRequest.of(param.getStart() /param.getSize(), param.getSize());

String knowledgeTitleFieldName= "knowledgeTitle";

String knowledgeContentFieldName= "knowledgeContent";

String preTags= "";

String postTags= "";

HighlightBuilder.Field knowledgeTitleField= newHighlightBuilder.Field(knowledgeTitleFieldName).preTags(pr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值