牛客论坛项目使用新版ElasticSearch

本文介绍如何在牛客论坛项目中应用新版ElasticSearch进行数据检索和管理,涉及测试类、Service层和Controller层的更新与集成。
摘要由CSDN通过智能技术生成

测试类

@Test
public void testSearchByTemplate() {
   
    NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(QueryBuilders.multiMatchQuery("互联网寒冬", "title", "content"))
            .withSort(SortBuilders.fieldSort("type").order(SortOrder.DESC))
            .withSort(SortBuilders.fieldSort("score").order(SortOrder.DESC))
            .withSort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC))
            .withPageable(PageRequest.of(0, 10))
            .withHighlightFields(
                    new HighlightBuilder.Field("title").preTags("<em>").postTags("</em>"),
                    new HighlightBuilder.Field("content").preTags("<em>").postTags("</em>")
            ).build();
    SearchHits<DiscussPost> search = elasticsearchRestTemplate.search(searchQuery, DiscussPost.class);

    // 得到查询结果返回的内容
    List<SearchHit<DiscussPost>> searchHits = search.getSearchHits();
    // 设置一个需要返回的实体类集合
    List<DiscussPost> discussPosts = new ArrayList<>();
    // 遍历返回的内容进行处理
    for(SearchHit<DiscussPost> searchHit : searchHits){
   
        // 高亮的内容
        Map<String, List<String>> highLightFields = searchHit.getHighlightFields();
        // 将高亮的内容填充到content中
        searchHit.getContent().setTitle(highLightFields.get("title") == null ? searchHit.getContent().getTitle() : highLightFields.get("title").get
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值