首页 > 其他分享 >elasticsearch 设置高亮

elasticsearch 设置高亮

时间:2023-10-19 22:32:29浏览次数:35  
标签:highlightFields 高亮 get content searchHit elasticsearch 设置 getContent


1、引入配置

springboot环境

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
    </parent>

引入es配置

<!--es-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

2、在service方法添加高亮代码

@Slf4j
@Service
public class PostServiceImpl extends ServiceImpl<PostMapper, PostEntity>
        implements IPostService {

    @Autowired
    private ElasticSearchPostMapper elasticSearchPostMapper;

    @Autowired
    private ElasticsearchRestTemplate elasticsearchTemplate;
 
 	@Override
    public List<PostIndex> searchInES(PostDto dto) {

        //根据一个值查询多个字段  并高亮显示  这里的查询是取并集,即多个字段只需要有一个字段满足即可
        //需要查询的字段
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.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("<span style='color:red'>").postTags("</span>"))
                .build();
        //查询
        SearchHits<PostIndex> search = elasticsearchTemplate.search(searchQuery, PostIndex.class);

        List<SearchHit<PostIndex>> searchHits = search.getSearchHits();
        //设置一个最后需要返回的实体类集合
        List<PostIndex> list = new ArrayList<>();
        //遍历返回的内容进行处理
        for (SearchHit<PostIndex> searchHit : searchHits) {
            //高亮的内容
            Map<String, List<String>> 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高亮查询所总结的内容,如果有什么问题,欢迎在评论下方留言

标签:highlightFields,高亮,get,content,searchHit,elasticsearch,设置,getContent
From: https://blog.51cto.com/u_14725510/7942856

相关文章

  • Pandas怎样设置处理后的第一行为索引?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【wen】问了一个Pandas自动化办公的问题,一起来看看吧。请教问题设置了header=None,通过drop_duplicates删除了重复行,怎样设置处理后的第一行为索引(原表格的列比较多,而且每次表格的列的名字不一定相同)二、实现过程这里......
  • 好用的代码高亮插件
    获取地址:Download▲Prism(prismjs.com)使用方法:<preclass="line-numbers"><codeclass="language-Python">deftest():<br>    print("123")</code></pre>......
  • 什么是静态代理IP?静态代理IP怎么设置?
    随着互联网的快速发展,越来越多的人需要使用网络来工作和学习。但在使用网络的过程中,有时会遇到一些问题,如网络连接不稳定、访问速度慢等。这些问题会影响我们的工作效率和学习效果,因此我们需要采取一些措施来解决它们。其中,使用代理IP是一种比较常见的解决方法。代理IP指的是通过使......
  • Linux账号密码安全策略设置
    前言随着云计算厂商的兴起,云资源如ECS不再只有企业或者公司才会使用,普通人也可以自己买一台ECS来搭建自己的应用或者网站。虽然云计算厂商帮我们做了很多安全相关的工作,但并不代表我们的机器资源就绝对是安全的。要知道有很多事情是云计算厂商不能为我们做的,就比如账号密码的安全......
  • vs2019设置添加类和接口自动添加作者信息
    参考:https://www.cnblogs.com/minuhy/p/14058721.html 一、找到VisualStudio2019安装目录如我的:D:\ProgramFiles(x86)\MicrosoftVisualStudio\2019\Community\Common7\IDE\ItemTemplates\CSharp\Code\2052二、修改类模板文件 #region<<版本注释>>/*---......
  • 造轮子之设置管理
    前面我们基础设施基本搭建完毕,后面可以做一些稍微复杂点的功能了,接下来就来实现一个设置管理。设置管理一般用做一些系统设置之类的,如邮箱配置等,面向使用人员。而不需要修改我们的配置文件,修改配置文件的方式就偏向于技术人员了。话不多说,开造。设计结构设置管理中需要2个表,一......
  • Elasticsearch 7.17.7开启x-pack
    1、ES配置文件  elasticsearch.ymlcluster.name:elasticsearchnode.name:node-1network.host:0.0.0.0discovery.type:single-nodexpack.security.enabled:truexpack.security.authc.api_key.enabled:true设置密码/usr/share/elasticsearch/bin/elasticsearch-s......
  • 错误 NETSDK1136 如果使用 Windows 窗体或 WPF,或者引用使用 Windows 窗体或 WPF 的项
    背景:当同一解决方案的项目A引用项目B的时候出现引用异常 大概意思是项目A的框架类型是.net7.0,项目B的框架类型是net7.0-windows两者不兼容查看了连着的项目类型发现项目B是指定为Windows操作系统(注:建立类库项目B时没有指定操作系统,不知为啥显示指定了) 类库项目A是没指定......
  • elasticsearch 8.7.0的Java API详解教程(一)
    最近作者做一个es的搜索,之前采用的是7.12.1,本来接口都已经基本上写好了,后面es要升级到8.7.0,一升级就连接不上es8.7.0了,后面才发现原来es8是默认采用了HTTPS协议,需要配置认证证书,这个问题搞了好久好久,最后终于搞成功了,在此写一篇博客记录一下。一、pom文件<?xmlversion="1.0"encod......
  • Elasticsearch(ES):现代搜索与分析引擎
    大数据时代带来了海量的信息和数据,如何高效地管理、搜索和分析这些数据成为了企业和组织面临的重要挑战。在这个背景下,Elasticsearch应运而生,它是一款强大的开源搜索和分析引擎,广泛用于各种领域,从企业搜索、日志分析到监控系统,为用户提供了快速、准确的数据搜索和分析功能。1.什么......