ES8 查询demo

 public SearchResponse<Object> buildAndExecuteSearchRequest(String index, String lastUpdateTime) throws IOException {
        // 第一个 should 条件:name字段不存在
        Query mustNotResumeExistsQuery = new Query.Builder()
                .bool(new BoolQuery.Builder()
                        .mustNot(new Query.Builder()
                                .exists(new ExistsQuery.Builder().field("name").build())
                                .build())
                        .build())
                .build();

        // 第二个 should 条件:name字段存在且 esUpdateTime 大于 lastUpdateTime
        Query resumeExistsAndTimeRangeQuery = new Query.Builder()
                .bool(new BoolQuery.Builder()
                        .must(new Query.Builder()
                                .exists(new ExistsQuery.Builder()
                                        .field("name")
                                        .build())
                                .build())
                        .must(new Query.Builder()
                                .range(RangeQuery.of(r -> r
                                        .date(d -> d
                                                .field("time")
                                                .gte(lastUpdateTime)
                                        ))
                                )
                                .build())
                        .build())
                .build();

// 构建布尔查询
        Query finalQuery = new Query.Builder()
                .bool(new BoolQuery.Builder()
                        .should(mustNotResumeExistsQuery)
                        .should(resumeExistsAndTimeRangeQuery)
                        .build())
                .build();

// 构建搜索请求
        SearchRequest searchRequest = new SearchRequest.Builder()
                .index(index)
                .query(finalQuery)
                .size(BATCH_SIZE)
                .build();

        log.info("Search request: {}", searchRequest);

        return esClient.search(searchRequest, Object.class);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值