Java Elasticsearch 时间范围查询和倒序排序工具类
以下是一个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/oeue 著作权归作者所有。请勿转载和采集!