Java Elasticsearch 查询条件构建:一个月内数据与任意时间段数据
以下是一个可能的 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 来执行查询。根据你的具体情况,你可能需要调整查询条件中的字段名和时间范围。
原文地址: https://www.cveoy.top/t/topic/onoU 著作权归作者所有。请勿转载和采集!