elasticsearch学习总结(三) API的使用范例2
来源:互联网 发布:mac hexo搭建个人博客 编辑:程序博客网 时间:2024/06/07 06:15
一、事件统计
1、Rest API实现
GET /gzns_access/_search
{
"aggs":{
"counts":{
"date_histogram": {
"field": "@timestamp",
"format":"yyyy-MM-dd HH:mm",
"interval":"minute"
}
}
}
}
2、java api实现
/**
* 事件统计
* @param param
* @return
*/
public List<ReportViewVO> getEventCountList(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);
//组装分组,根据@timestamp按时间周期统计次数
DateHistogramAggregationBuilder aggregation = AggregationBuilders.dateHistogram("counts");
aggregation.field("@timestamp");
String interval = param.getInterval();
//统计周期 1y:年,1q:季度,1M:月,1w:周,1d:日,1H:小时,1m:分钟,1s:秒
switch (interval) {
case "1y":
aggregation.dateHistogramInterval(DateHistogramInterval.YEAR);
aggregation.format("yyyy");
break;
case "1q":
aggregation.dateHistogramInterval(DateHistogramInterval.QUARTER);
aggregation.format("yyyy-MM");
break;
case "1M":
aggregation.dateHistogramInterval(DateHistogramInterval.MONTH);
aggregation.format("yyyy-MM");
break;
case "1w":
aggregation.dateHistogramInterval(DateHistogramInterval.WEEK);
aggregation.format("yyyy-MM-dd");
break;
case "1d":
aggregation.dateHistogramInterval(DateHistogramInterval.DAY);
aggregation.format("yyyy-MM-dd");
break;
case "1H":
aggregation.dateHistogramInterval(DateHistogramInterval.HOUR);
aggregation.format("yyyy-MM-dd HH");
break;
case "1m":
aggregation.dateHistogramInterval(DateHistogramInterval.MINUTE);
aggregation.format("yyyy-MM-dd HH:mm");
break;
case "1s":
aggregation.dateHistogramInterval(DateHistogramInterval.HOUR);
aggregation.format("yyyy-MM-dd HH:mm:ss");
break;
default:
break;
}
requestbuilder.addAggregation(aggregation);
//获取查询结果
SearchResponse myresponse = requestbuilder.get();
Map<String, Aggregation> aggMap = myresponse.getAggregations().asMap();
InternalDateHistogram idh = (InternalDateHistogram) aggMap.get("counts");
//获取分组桶数据
List<Bucket> buckets = idh.getBuckets();
//返回的vo结果集
List<ReportViewVO> list = new ArrayList<ReportViewVO>();
ReportViewVO item = null;
for(Bucket bucket : buckets){
item = new ReportViewVO();
//时间
item.setTimestamp(bucket.getKeyAsString());
//事件次数
item.setValue(bucket.getDocCount());
list.add(item);
}
return list;
}
- elasticsearch学习总结(三) API的使用范例2
- elasticsearch学习总结(三) API的使用范例3
- elasticsearch学习总结(三) API的使用范例4
- elasticsearch学习总结(三) API的使用范例5
- elasticsearch学习总结(三) API的使用范例6
- elasticsearch学习总结(三) Java API的使用范例1
- Elasticsearch Java API 的使用(2)—创建索引
- 使用Elasticsearch的java api,操作elasticsearch
- Elasticsearch学习(三)
- elasticsearch学习总结——API 规范
- ElasticSearch Java API的使用
- Elasticsearch的Bulk API使用
- Elasticsearch的Java API使用
- Spark学习总结三 SparkSql操作elasticsearch
- ElasticSearch 菜鸟笔记(三)ElasticSearch 常见REST API 操作
- Elasticsearch 5.x (三) Elasticsearch REST API
- elasticsearch-java api之搜索(三)
- 经典收藏:网络命令行的使用和范例(三)
- PHP+Ajax点击加载更多内容 -效果好,速度快,带图片加载和跳转链接 加载最后一页更多变成文字变没记录
- 《神经网络设计》读书笔记——性能曲面和最优点
- 机器学习知识点(人工智能篇)
- shell实现彩色进度条
- [Leetcode] 32. Longest Valid Parentheses
- elasticsearch学习总结(三) API的使用范例2
- jsTree 预览 与入门
- Visual Studio中JavaScript智能提示(即引用JS库)
- NodeJs中process.cwd()与__dirname的区别
- 知识收藏:浏览器操作—ruby
- Android 自定义控件打造史上最简单的侧滑菜单
- qt中qss文件
- JMS入门(四)--Topic的使用
- Python join、center