您可以使用Elasticsearch的Java API来执行这个查询。首先,您需要创建一个Elasticsearch的客户端连接。然后,您可以使用elasticsearch的查询构建器来构建您的查询。

以下是一个示例代码,演示如何使用elasticsearch的Java API来执行这个查询:

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;

import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneOffset;

public class ElasticSearchExample {
    private RestHighLevelClient client;

    public ElasticSearchExample() {
        // 初始化elasticsearch客户端连接
        client = new RestHighLevelClient(/* Elasticsearch客户端配置 */);
    }

    public void queryData() {
        // 构建查询条件
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();

        // 查询时间范围:最近30天
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime thirtyDaysAgo = now.minusDays(30);
        RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("timestamp")
                .gte(thirtyDaysAgo.toInstant(ZoneOffset.UTC).toEpochMilli())
                .lte(now.toInstant(ZoneOffset.UTC).toEpochMilli());
        boolQuery.must(rangeQuery);

        // 查询时间范围:6:00到24:00
        LocalTime startTime = LocalTime.of(6, 0);
        LocalTime endTime = LocalTime.of(23, 59);
        RangeQueryBuilder timeRangeQuery = QueryBuilders.rangeQuery("time")
                .gte(startTime.toSecondOfDay() * 1000)
                .lte(endTime.toSecondOfDay() * 1000);
        boolQuery.must(timeRangeQuery);

        // 构建查询请求
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(boolQuery);
        sourceBuilder.sort("timestamp", SortOrder.DESC);
        sourceBuilder.size(1000); // 设置查询结果数量
        SearchRequest searchRequest = new SearchRequest("your_index_name");
        searchRequest.source(sourceBuilder);

        try {
            // 执行查询
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

            // 处理查询结果
            // ...
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,您需要根据您的实际情况设置elasticsearch客户端的配置,例如设置集群的地址、用户名和密码等。

请注意,上述示例中的查询条件是基于字段"timestamp"和"time"的,您需要根据您的数据结构和字段名称进行相应的调整。

希望对您有所帮助

java elasticSearchRepository 查询时间在最近30天内每天600到2400的数据

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

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