java 查询es数据支持时间范围查询并按时间倒序排序工具类
以下是一个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 对象,其中包含了查询结果。可以根据需要对查询结果进行处理
原文地址: https://www.cveoy.top/t/topic/fppQ 著作权归作者所有。请勿转载和采集!