es多条件或的关系,高亮,分页查询

查询条件

  1. 多条件或的关系
  2. 高亮关键字
  3. 分页查询

查询客户端ElasticsearchRestTemplate

    @Override
    public List<JobOrder> findByJobOrderTitleOrJobOrderContent(String text, Integer page, Integer size) {
        Assert.isTrue(page != null,"当前页数不能必传");
        Assert.isTrue(size != null,"每页显示条数必传");
        org.springframework.data.domain.PageRequest pageRequest = org.springframework.data.domain.PageRequest.of(page-1, size);
        //构建查询条件
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        boolQuery.should(QueryBuilders.matchQuery("jobOrderTitle", text));
        boolQuery.should(QueryBuilders.matchQuery("jobOrderContent", text));
        //构建高亮字段
        HighlightBuilder.Field field1 = new HighlightBuilder.Field("jobOrderTitle")
                .preTags("<font color='red'>")
                .postTags("</font>");
        HighlightBuilder.Field field2 = new HighlightBuilder.Field("jobOrderContent")
                .preTags("<font color='red'>")
                .postTags("</font>");
        HighlightBuilder.Field[] fields = {field1,field2};
        // 构建查询
        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(boolQuery)
                .withHighlightFields(fields)
                .withPageable(pageRequest)
                .build();
        //执行查询
        SearchHits<JobOrder> searchHits = elasticsearchRestTemplate.search(searchQuery, JobOrder.class);
        List<JobOrder> jobOrders = new ArrayList<>();
        for (SearchHit<JobOrder> searchHit : searchHits.getSearchHits()) {
            JobOrder content = searchHit.getContent();
            //获取高亮信息,把高亮字段复制到对象上
            Map<String, List<String>> highlightFields = searchHit.getHighlightFields();
            List<String> jobOrderTitle = highlightFields.get("jobOrderTitle");
            if(jobOrderTitle!=null){
                content.setJobOrderTitle(jobOrderTitle.get(0));
            }
            List<String> jobOrderContent = highlightFields.get("jobOrderContent");
            if (jobOrderContent != null) {
                content.setJobOrderContent(jobOrderContent.get(0));
            }
            jobOrders.add(content);
        }
        return jobOrders;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值