以下是一个示例,演示如何使用 Java 查询 ES 数据的工具类,并支持根据时间范围查询:

import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;

import java.util.Date;

public class ESQueryUtils {

    public static BoolQueryBuilder buildQuery(Date startDate, Date endDate) {

        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

        // 添加时间范围查询条件
        RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery('timestamp')
                .from(startDate)
                .to(endDate)
                .includeLower(true)
                .includeUpper(true);
        boolQueryBuilder.must(rangeQueryBuilder);

        // 可以继续添加其他查询条件

        return boolQueryBuilder;
    }
}

在上述示例中,我们定义了一个名为buildQuery的静态方法,它接受两个日期参数startDateendDate作为查询的时间范围。它首先创建一个BoolQueryBuilder实例,并使用QueryBuilders.rangeQuery构建一个时间范围查询条件,并将其添加到must查询中。可以通过调用其他查询构建器方法向must查询中添加更多的查询条件。

使用该工具类时,可以使用以下代码示例:

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.search.SearchHit;

import java.util.Date;

public class Main {

    public static void main(String[] args) {

        // 创建ES客户端
        TransportClient client = createClient();

        // 构建查询条件
        Date startDate = new Date(System.currentTimeMillis() - 24 * 3600 * 1000);
        Date endDate = new Date();
        BoolQueryBuilder boolQueryBuilder = ESQueryUtils.buildQuery(startDate, endDate);

        // 执行查询
        SearchResponse searchResponse = client.prepareSearch('my_index')
                .setTypes('my_type')
                .setQuery(boolQueryBuilder)
                .get();

        // 处理查询结果
        for (SearchHit hit : searchResponse.getHits()) {
            System.out.println(hit.getSourceAsString());
        }

        // 关闭客户端
        client.close();
    }

    private static TransportClient createClient() {
        // 创建ES客户端
        // ...
        return client;
    }
}

在上述示例中,我们创建了一个ES客户端,并使用ESQueryUtils.buildQuery构建了一个查询条件。然后我们使用该查询条件执行了一个查询,并遍历了查询结果。最后,我们关闭了ES客户端。

Java ES 数据查询工具类 - 支持时间范围筛选

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

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