java构建es查询条件根据latestTs字段同时满足查询一个月内的数据和一个月内的任意时间段的数据
以下是一个可能的Java代码示例,它使用RangeQueryBuilder和BoolQueryBuilder构建了一个查询条件,该条件同时满足查询一个月内的数据和一个月内的任意时间段的数据:
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
// 构建查询条件
Instant now = Instant.now();
Instant oneMonthAgo = now.minus(1, ChronoUnit.MONTHS);
RangeQueryBuilder latestTsRangeQuery = QueryBuilders.rangeQuery("latestTs")
.gte(oneMonthAgo.toEpochMilli())
.lte(now.toEpochMilli());
BoolQueryBuilder query = QueryBuilders.boolQuery().must(latestTsRangeQuery);
// 如果需要查询一个月内的任意时间段的数据,可以添加以下条件
Instant twoWeeksAgo = now.minus(2, ChronoUnit.WEEKS);
RangeQueryBuilder anyTimeRangeQuery = QueryBuilders.rangeQuery("latestTs")
.gte(twoWeeksAgo.toEpochMilli())
.lte(now.toEpochMilli());
query.should(anyTimeRangeQuery);
// 执行查询
SearchResponse response = client.prepareSearch("my_index")
.setQuery(query)
.get();
这个示例假设你正在使用Elasticsearch Java客户端API来执行查询。根据你的具体情况,你可能需要调整查询条件中的字段名和时间范围
原文地址: http://www.cveoy.top/t/topic/fHLE 著作权归作者所有。请勿转载和采集!