elasticsearch学习总结(三) API的使用范例3
2017-07-20 14:12
1131 查看
二、按时间分段统计事件次数
1、Rest api方式
GET /gzns_access/_search
{
"aggs":{
"counts":{
"date_range": {
"field": "@timestamp",
"format":"yyyy-MM-dd HH:mm:ss",
"ranges":[
{
"from":"2017-05-31 00:00:00",
"to":"2017-05-31 23:59:59"
},
{
"from":"2017-06-01 00:00:00",
"to":"2017-06-01 23:59:59"
}
]
}
}
}
}
2、java api方式
public List<ReportViewVO> getTimeRangeList(ReportViewVO param){
SearchRequestBuilder requestbuilder = client.prepareSearch(param.getIndex());
BoolQueryBuilder bqb = QueryBuilders.boolQuery();
String host = param.getHost();
if(StringUtils.isNotEmpty(host))
{
bqb.must(QueryBuilders.termQuery("host", param.getHost()));
}
String type = param.getType();
if(StringUtils.isNotEmpty(type))
{
bqb.must(QueryBuilders.termQuery("_type", param.getHost()));
}
requestbuilder.setQuery(bqb);
//时间区间统计
DateRangeAggregationBuilder aggregation = AggregationBuilders.dateRange("counts").field("@timestamp").format("yyyy-MM-dd HH:mm:ss");
List<TimeRangeVO> timeRanges = param.getTimeRange();
for(TimeRangeVO item : timeRanges){
aggregation.addRange(item.getStart(), item.getEnd());
}
requestbuilder.addAggregation(aggregation);
SearchResponse myresponse = requestbuilder.get();
Map<String, Aggregation> aggMap = myresponse.getAggregations().asMap();
InternalDateRange idr = (InternalDateRange) aggMap.get("counts");
List<InternalDateRange.Bucket> buckets = idr.getBuckets();
List<ReportViewVO> list = new ArrayList<ReportViewVO>();
ReportViewVO item = null;
for(InternalDateRange.Bucket bucket : buckets){
item = new ReportViewVO();
item.setTimestamp(bucket.getKeyAsString());
item.setValue(bucket.getDocCount());
list.add(item);
}
return list;
}
1、Rest api方式
GET /gzns_access/_search
{
"aggs":{
"counts":{
"date_range": {
"field": "@timestamp",
"format":"yyyy-MM-dd HH:mm:ss",
"ranges":[
{
"from":"2017-05-31 00:00:00",
"to":"2017-05-31 23:59:59"
},
{
"from":"2017-06-01 00:00:00",
"to":"2017-06-01 23:59:59"
}
]
}
}
}
}
2、java api方式
public List<ReportViewVO> getTimeRangeList(ReportViewVO param){
SearchRequestBuilder requestbuilder = client.prepareSearch(param.getIndex());
BoolQueryBuilder bqb = QueryBuilders.boolQuery();
String host = param.getHost();
if(StringUtils.isNotEmpty(host))
{
bqb.must(QueryBuilders.termQuery("host", param.getHost()));
}
String type = param.getType();
if(StringUtils.isNotEmpty(type))
{
bqb.must(QueryBuilders.termQuery("_type", param.getHost()));
}
requestbuilder.setQuery(bqb);
//时间区间统计
DateRangeAggregationBuilder aggregation = AggregationBuilders.dateRange("counts").field("@timestamp").format("yyyy-MM-dd HH:mm:ss");
List<TimeRangeVO> timeRanges = param.getTimeRange();
for(TimeRangeVO item : timeRanges){
aggregation.addRange(item.getStart(), item.getEnd());
}
requestbuilder.addAggregation(aggregation);
SearchResponse myresponse = requestbuilder.get();
Map<String, Aggregation> aggMap = myresponse.getAggregations().asMap();
InternalDateRange idr = (InternalDateRange) aggMap.get("counts");
List<InternalDateRange.Bucket> buckets = idr.getBuckets();
List<ReportViewVO> list = new ArrayList<ReportViewVO>();
ReportViewVO item = null;
for(InternalDateRange.Bucket bucket : buckets){
item = new ReportViewVO();
item.setTimestamp(bucket.getKeyAsString());
item.setValue(bucket.getDocCount());
list.add(item);
}
return list;
}
相关文章推荐
- elasticsearch学习总结(三) API的使用范例2
- elasticsearch学习总结(三) API的使用范例6
- elasticsearch学习总结(三) API的使用范例4
- elasticsearch学习总结(三) API的使用范例5
- elasticsearch学习总结(三) Java API的使用范例1
- Linux内核设计第四周学习总结 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- Elasticsearch学习总结六 使用Observer实现HBase到Elasticsearch的数据同步
- Elasticsearch——使用学习1(API约定,多个索引支持)
- Google、Aliyun和百度地图切换以及API的使用和(2011.01.12未发布)学习总结
- elasticsearch学习总结——API 规范
- Elasticsearch学习总结三 elasticSearch基本操作API
- lucene学习总结篇--lucene全文检索的基本原理和lucene API简单的使用
- FMOD学习之---------api使用总结
- Java基础学习总结(67)——Java接口API中使用数组的缺陷
- Java基础学习总结(67)——Java接口API中使用数组的缺陷
- Ibatis学习总结6--使用 SQL Map API 编程
- 学习总结-常用API:正则表达式的使用
- Elasticsearch学习随笔(二)-- Index 和 Doc 查询新建API总结
- Symbian学习笔记(14):使用Browser Control API
- .net学习之WSE使用总结