要实现这样一个功能
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单文档数据导出 支持自定义查询 导出数据Json文件
elasticsearch_exporter, Elasticsearch的统计数据导出程序 Elasticsearch导出程序 面向ElasticSearch的各种标准的Prometheus导出器,用。安装对于预生成的二进制文件,请查看发行版。...
**Elasticsearch官方测试数据详解** Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch...
Elasticsearch数据导出工具是一种高效实用的解决方案,它允许用户方便地从Elasticsearch(ES)集群中抽取数据,并将其导出到不同的目标,如MySQL数据库或本地文件系统。这款工具尤其适用于需要进行数据迁移、备份或...
Elasticsearch 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合: Wikipedia 使用 Elasticsearch 提供带有...
ElasticSearch测试数据
Atlas2.2.0 编译、安装及使用(集成 ElasticSearch,导入 Hive 数据) Atlas2.2.0 是一个强大的元数据管理工具,它提供了多种数据源的集成和管理功能。在本文中,我们将详细介绍如何编译、安装和使用 Atlas2.2.0,...
**Elasticsearch官方提供数据案例account.json** Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许用户快速地存储、搜索和分析大量数据。在这个案例中,"account.json"是Elasticsearch官方提供的一...
本文将深入探讨如何利用ArcGIS桌面工具将矢量数据(如.shp文件)导入到Elasticsearch(ES)中,以便进行高效的数据存储、检索和分析。 首先,ArcGIS桌面软件提供了丰富的地理数据处理功能,其中包括支持多种矢量...
因为你不知道将Hive的数据导入到了ElasticSearch后,数据量是否准确,所以需要钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量,注意,这个项目打包后,最好另起一个进程调用,并且开始时间为文章1或者2最大...
3. **聚合分析**:Elasticsearch的聚合功能允许对数据进行统计分析,如求和、平均值、最大值和最小值等。我们可以用测试数据来验证这些统计结果是否正确,并评估执行聚合查询的时间。 4. **高可用性**:通过模拟...
ElasticSearch数据导入 文件导入 单个索引导入 文件按格式采用Json
1. **logstash-***: Logstash是一个数据收集和处理系统,它可以将各种日志、事件数据从各种源头抽取、转换并加载到Elasticsearch。"logstash-*"通常表示Logstash生成的日志索引前缀,其中的星号(*)是通配符,意味着...
ES 官方示例数据
本设计源码提供了一个基于Java的Elasticsearch数据同步迁移工具。项目包含29个文件,主要使用Java和Shell编程语言。文件类型包括7个Java源代码文件、5个BAT批处理文件、5个Shell脚本文件、3个XML配置文件、2个...
Logstash 是一个强大的数据处理管道,它允许用户从各种数据源采集数据,转换数据,并将其发送到各种目标,如 Elasticsearch 或 Kafka。在标题和描述中提到的 "elasticsearch或kafka的数据抽取工具:logstash-5.6.1...
springboot整合elasticsearch7,进行数据同步。elasticsearch相关度查询、排序。高亮显示;自动补全等功能。代码仅供参考,代码中有具体的注释,可以根据代码及注释内容,对自己项目架构及业务进行修改、整合。
标题 "用于SqlServer 同步数据到ElasticSearch的logstash测试" 描述了一种通过Logstash将SQL Server数据库中的数据实时或定期同步到ElasticSearch的解决方案。在.NET平台上,这种数据同步通常是为了实现大数据分析、...
Elasticsearch测试数据,3160条商品数据 数据导入命令: curl -XPOST 'localhost:9200/pditems/_bulk' -H 'Content-Type:application/json' --data-binary @pditems.json