`
wsdtq123
  • 浏览: 47628 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

elastic按小时统计当天数据

阅读更多
要实现这样一个功能
select count(1),小时 from user where createDate=今天 group by 每小时
原本以为很简单的一个聚合很容易找到相关资料,没想到花了好几个小时

首先建一个测试的index和type,分别为ksearch_test和user,
建立mapping

http://ip:port/ksearch_test/user/_mapping  PUT

{
  "user":{
    "properties":{
      "name":{
        "type":"string",
        "index":"not_analyzed" //不分词
      },
      "createDate":{
        "type":"date",
        "index":"not_analyzed"
      }
    }
  }
}



实现聚合,按每小时统计当天数据:
http://ip:port/ksearch_test/user/_search  POST
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "date_histogram": {          //es提供的时间处理函数
        "field": "createDate",     //需要聚合的字段名字
        "interval": "hour",        //按小时group by
        "format": "yyyy-MM-dd HH", //返回值格式化,HH大写,不然不能区分上午、下午
        "min_doc_count": 0,        //为空填充0
        "extended_bounds": {       //需要填充0的范围
          "min": "2016-12-19 01",
          "max": "2016-12-19 23"
        }
      }
    }
  },
  "query": { //这就是where
    "filtered": {
      "filter": {
        "range": {
          "createDate": {
            "gte": "2016-12-19T00:00:00.000",
            "lt": "2016-12-20T00:00:00.000"
          }
        }
      }
    }
  }
}


使用spring-data-elasticsearch在java中实现
@SuppressWarnings("deprecation")
	@Test
	public void group_by_day(){
		String indexName = "ksearch_test3";
		String typeName = "ks_user_trace";
		
		//QueryBuilder queryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.queryFilter(QueryBuilders.rangeQuery("create_time").gte("2016-11-19T01:00:00.000").lt("2016-12-19T00:00:00.000")));
		QueryBuilder queryBuilder = QueryBuilders.queryFilter(QueryBuilders.rangeQuery("create_time").gte("2016-11-19T01:00:00.000").lt("2016-12-19T00:00:00.000"));
	
		
		AbstractAggregationBuilder aggregation = AggregationBuilders.dateHistogram("group_by_day").field("create_time").interval(DateHistogramInterval.DAY).format("yyyy-MM-dd").minDocCount(0L).extendedBounds("2016-11-19", "2016-12-19");
		
		SearchRequestBuilder reqBuilder = client.prepareSearch(indexName)
				.setTypes(typeName)
				.setQuery(queryBuilder)
				.addAggregation(aggregation);
				
		
		SearchResponse resp = reqBuilder.execute().actionGet();
		Aggregations aggs = resp.getAggregations();
		InternalHistogram agg = aggs.get("group_by_day");
		List<Bucket> buckets =  (List<Bucket>) agg.getBuckets();
		
		for(Bucket bucket:buckets){
			Long docCount = bucket.getDocCount();
			String date = bucket.getKeyAsString();
			
			System.out.println(date+":"+docCount);
		}
	}
分享到:
评论

相关推荐

    ElasticSearch数据导出

    ElasticSearch数据导出 elasticsearch单文档数据导出 支持自定义查询 导出数据Json文件

    elasticsearch_exporter, Elasticsearch的统计数据导出程序.zip

    elasticsearch_exporter, Elasticsearch的统计数据导出程序 Elasticsearch导出程序 面向ElasticSearch的各种标准的Prometheus导出器,用。安装对于预生成的二进制文件,请查看发行版。...

    ElasticSearch官方测试数据

    **Elasticsearch官方测试数据详解** Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch...

    Elasticsearch数据导出工具

    Elasticsearch数据导出工具是一种高效实用的解决方案,它允许用户方便地从Elasticsearch(ES)集群中抽取数据,并将其导出到不同的目标,如MySQL数据库或本地文件系统。这款工具尤其适用于需要进行数据迁移、备份或...

    elasticsearch权威指南示例数据

    Elasticsearch 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合: Wikipedia 使用 Elasticsearch 提供带有...

    ElasticSearch测试数据

    ElasticSearch测试数据

    Atlas2.2.0编译、安装及使用(集成ElasticSearch,导入Hive数据).doc

    Atlas2.2.0 编译、安装及使用(集成 ElasticSearch,导入 Hive 数据) Atlas2.2.0 是一个强大的元数据管理工具,它提供了多种数据源的集成和管理功能。在本文中,我们将详细介绍如何编译、安装和使用 Atlas2.2.0,...

    Elasticsearch官方提供数据案例account.json

    **Elasticsearch官方提供数据案例account.json** Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许用户快速地存储、搜索和分析大量数据。在这个案例中,"account.json"是Elasticsearch官方提供的一...

    ArcGIS桌面工具--矢量数据导入elasticsearch

    本文将深入探讨如何利用ArcGIS桌面工具将矢量数据(如.shp文件)导入到Elasticsearch(ES)中,以便进行高效的数据存储、检索和分析。 首先,ArcGIS桌面软件提供了丰富的地理数据处理功能,其中包括支持多种矢量...

    项目实战——钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量(Java版本)

    因为你不知道将Hive的数据导入到了ElasticSearch后,数据量是否准确,所以需要钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量,注意,这个项目打包后,最好另起一个进程调用,并且开始时间为文章1或者2最大...

    Elasticsearch测试数据.rar

    3. **聚合分析**:Elasticsearch的聚合功能允许对数据进行统计分析,如求和、平均值、最大值和最小值等。我们可以用测试数据来验证这些统计结果是否正确,并评估执行聚合查询的时间。 4. **高可用性**:通过模拟...

    ElasticSearch数据导入

    ElasticSearch数据导入 文件导入 单个索引导入 文件按格式采用Json

    elasticSearch测试数据

    1. **logstash-***: Logstash是一个数据收集和处理系统,它可以将各种日志、事件数据从各种源头抽取、转换并加载到Elasticsearch。"logstash-*"通常表示Logstash生成的日志索引前缀,其中的星号(*)是通配符,意味着...

    ElasticSearch 官方示例测试数据

    ES 官方示例数据

    基于Java的Elasticsearch数据同步迁移工具设计源码

    本设计源码提供了一个基于Java的Elasticsearch数据同步迁移工具。项目包含29个文件,主要使用Java和Shell编程语言。文件类型包括7个Java源代码文件、5个BAT批处理文件、5个Shell脚本文件、3个XML配置文件、2个...

    elasticsearch或kafka的数据抽取工具:logstash-5.6.1

    Logstash 是一个强大的数据处理管道,它允许用户从各种数据源采集数据,转换数据,并将其发送到各种目标,如 Elasticsearch 或 Kafka。在标题和描述中提到的 "elasticsearch或kafka的数据抽取工具:logstash-5.6.1...

    springboot整合elasticsearch7实现es数据同步,查询、相关度排序、高亮显示、自动补全搜索等功能。

    springboot整合elasticsearch7,进行数据同步。elasticsearch相关度查询、排序。高亮显示;自动补全等功能。代码仅供参考,代码中有具体的注释,可以根据代码及注释内容,对自己项目架构及业务进行修改、整合。

    用于SqlServer 同步数据到ElasticSearch的logstash测试

    标题 "用于SqlServer 同步数据到ElasticSearch的logstash测试" 描述了一种通过Logstash将SQL Server数据库中的数据实时或定期同步到ElasticSearch的解决方案。在.NET平台上,这种数据同步通常是为了实现大数据分析、...

    Elasticsearch测试数据,3160条商品数据

    Elasticsearch测试数据,3160条商品数据 数据导入命令: curl -XPOST 'localhost:9200/pditems/_bulk' -H 'Content-Type:application/json' --data-binary @pditems.json

Global site tag (gtag.js) - Google Analytics