可以使用range查询来实现根据latestTs字段只查一个月以内的数据,具体如下:

QueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("latestTs")
    .format("epoch_millis")
    .gte(System.currentTimeMillis() - 2592000000L) // 一个月前的时间戳
    .lte(System.currentTimeMillis()); // 当前时间戳

然后根据latestTs查询一个月内的任意时间段的数据,可以在range查询的基础上再添加一个range子查询,具体如下:

QueryBuilder queryBuilder = QueryBuilders.boolQuery()
    .must(rangeQueryBuilder)
    .must(QueryBuilders.rangeQuery("latestTs")
        .format("epoch_millis")
        .gte(startTime)
        .lte(endTime));

其中,startTime和endTime是查询的起始时间和结束时间,可以根据实际需求设置。这个查询条件可以用于search API的查询参数中

java构建es查询条件根据latestTs字段只查一个月以内的数据然后根据latestTs查询一个月内的任意时间段的数据该怎么构建

原文地址: https://www.cveoy.top/t/topic/fHxa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录