以下是Java代码示例,用于构建Elasticsearch查询条件,以检索latestTs字段在当前系统时间一个月内的任意时间段数据:

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

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class EsQueryBuilder {

    public static RangeQueryBuilder getLatestTsRangeQuery() {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime monthAgo = now.minusMonths(1);
        DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;

        String nowStr = now.format(formatter);
        String monthAgoStr = monthAgo.format(formatter);

        return QueryBuilders.rangeQuery("latestTs")
                .from(monthAgoStr)
                .to(nowStr)
                .format("strict_date_time");
    }
}

在上面的代码中,我们使用了Elasticsearch的RangeQueryBuilder来构建查询条件。我们使用LocalDateTime来获取当前系统时间和一个月前的时间,并将它们格式化为strict_date_time格式的字符串。然后,我们使用rangeQuery方法来创建一个RangeQueryBuilder对象,并指定查询字段为latestTs。最后,我们使用fromto方法来指定查询的时间范围。

使用示例:

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.QueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;

import java.io.IOException;

public class EsQueryService {

    private final RestHighLevelClient client;

    public EsQueryService(RestHighLevelClient client) {
        this.client = client;
    }

    public SearchResponse searchByLatestTs() throws IOException {
        QueryBuilder query = EsQueryBuilder.getLatestTsRangeQuery();

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(query);

        SearchRequest searchRequest = new SearchRequest("my_index");
        searchRequest.source(searchSourceBuilder);

        return client.search(searchRequest, RequestOptions.DEFAULT);
    }
}

在上面的代码中,我们使用EsQueryBuilder类中的getLatestTsRangeQuery()方法来获取查询条件。然后,我们使用SearchSourceBuilder来构建查询请求,并将查询条件添加到请求中。最后,我们使用SearchRequest来指定查询的索引,并使用RestHighLevelClient执行查询请求

java构建es查询条件根据latestTs字段查询当前系统时间一个月内的任意时间段数据

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

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