以下是一个Java工具类,可用于查询Elasticsearch数据,支持时间范围查询并按时间倒序排序:

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.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;

import java.io.IOException;
import java.util.Date;

public class ElasticsearchQueryUtils {

    private RestHighLevelClient client;

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

    public SearchResponse searchByTimeRange(String indexName, String timeField, Date startTime, Date endTime, int from, int size) throws IOException {
        SearchRequest searchRequest = new SearchRequest(indexName);
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.rangeQuery(timeField).gte(startTime).lte(endTime));
        searchSourceBuilder.sort(SortBuilders.fieldSort(timeField).order(SortOrder.DESC));
        searchSourceBuilder.from(from);
        searchSourceBuilder.size(size);
        searchSourceBuilder.timeout(TimeValue.timeValueSeconds(60));
        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        return searchResponse;
    }
}

其中,client 参数是 Elasticsearch 的 RestHighLevelClient 客户端。searchByTimeRange 方法接收以下参数:

  • indexName:要查询的索引名称;
  • timeField:存储时间信息的字段名称;
  • startTime:查询的开始时间;
  • endTime:查询的结束时间;
  • from:查询结果的起始位置;
  • size:查询结果的数量限制;

该方法会返回一个 SearchResponse 对象,其中包含了查询结果。可以根据需要对查询结果进行处理

java 查询es数据支持时间范围查询并按时间倒序排序工具类

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

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