RestHightLevelClient 查询一个字段的多个值场景

该代码段展示了如何在搜索引擎中构建一个查询,包括设置时间范围、匹配内容、处理多个频道和排序方式。布尔查询用于处理不同条件之间的逻辑关系,如必须匹配的内容和频道。搜索源构建器则用于设置查询大小、跟踪总命中数和排序顺序。这是一个针对信息检索和数据筛选的高效方法。
摘要由CSDN通过智能技术生成

给自己看的,要是忘了就来这里找。

    private SearchSourceBuilder assembleSearchBuilder(String anchor, List<String> channels, long rangeMin, long rangeMax, int batchSize, String sortFiled) {
        BoolQueryBuilder builder = QueryBuilders.boolQuery();

        RangeQueryBuilder publishTime = QueryBuilders.rangeQuery(VocDataConstants.PUBLISH_TIME_KEY);
        publishTime.gte(rangeMin);
        publishTime.lt(rangeMax);
        builder.must(publishTime);

        QueryBuilder content = QueryBuilders.matchPhraseQuery("content", anchor);
        builder.must(content);
        
		// channel 中有多个值,“或”的关系用“should”。
        BoolQueryBuilder channelQueryBuilder = new BoolQueryBuilder();
        for(String channel: channels){
            channelQueryBuilder.should(QueryBuilders.matchPhraseQuery("channel",channel));
        }
        builder.must(channelQueryBuilder);

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().trackTotalHits(true);
        searchSourceBuilder.query(builder);
        searchSourceBuilder.size(batchSize);
        searchSourceBuilder.sort(SortBuilders.fieldSort(sortFiled).order(SortOrder.ASC));
        log.info("query condition: " + builder);
        return searchSourceBuilder;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值