java构建es查询条件根据latestTs字段查询一个月内的数据再根据latestTs字段查询这个月内任意时间段的数据
- 查询一个月内的数据:
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
// 构建查询条件
QueryBuilder query = QueryBuilders.rangeQuery("latestTs")
.gte(Instant.now().minus(1, ChronoUnit.MONTHS).toEpochMilli())
.lte(Instant.now().toEpochMilli());
// 构建查询请求
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(query);
// 执行查询请求
SearchResponse searchResponse = client.search(new SearchRequest("index_name").source(searchSourceBuilder), RequestOptions.DEFAULT);
- 查询这个月内任意时间段的数据:
// 构建查询条件
QueryBuilder query = QueryBuilders.rangeQuery("latestTs")
.gte(Instant.parse("2022-01-01T00:00:00Z").toEpochMilli())
.lte(Instant.parse("2022-01-31T23:59:59Z").toEpochMilli());
// 构建查询请求
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(query);
// 执行查询请求
SearchResponse searchResponse = client.search(new SearchRequest("index_name").source(searchSourceBuilder), RequestOptions.DEFAULT);
其中,Instant.parse("2022-01-01T00:00:00Z") 和 Instant.parse("2022-01-31T23:59:59Z") 分别代表这个月的起始时间和结束时间。可以根据实际情况调整
原文地址: https://www.cveoy.top/t/topic/fHHg 著作权归作者所有。请勿转载和采集!