Elasticsearch 聚合(aggregation)查询返回所有

JSON 2016-08-22 18:53:45 115826

Elasticsearch  做查询的时候,很多情况下,有一些查询满足不了我们的要求,这个时候,我们用Elasticsearch 的聚合(aggregation )函数,下面讲讲aggregation 的使用姿势。

Elasticsearch  做聚合查询的时候。

{
	"from": 0,
	"size": 10,
	"aggregations": {
		"types": {
			"terms": {
				"field": "types"
			}
		}
	}
}

Java   API 

AggregationBuilder<?> aggregation = AggregationBuilders.terms("types").field("types");
SearchRequestBuilder srb = client.prepareSearch(BaseMapping.index);
srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
SearchResponse response = srb.execute().actionGet();

Aggregations agg = response.getAggregations();		
Terms types = agg.get("types");

这样都可以获取到聚合数据。按照字段 types 进行聚合查询。这个时候返回是10 条聚合数据。但是我想返回所有的呢?

我看了源码,个人觉得比较坑。

 /**
     * Sets the size - indicating how many term buckets should be returned (defaults to 10)
     */
    public TermsBuilder size(int size) {
        bucketCountThresholds.setRequiredSize(size);
        return this;
    }

这里说了,在后面加size 可以指定返回条数,默认是10 条。但是没说明,我要全部的数据的size(0) 的问题。

后来查询资料,没找到相关资料,问其他同学,得到结果,size(-1) or size(0) 试试,结果我觉得-1 的正确几率大点,结果报错,从错误来看,说size 必须大于或者等于0 ,试试0 ,结果返回全部,也就是Global 。得到如下写法。

{
	"from": 0,
	"size": 10,
	"aggregations": {
		"types": {
			"terms": {
				"field": "types",
				"size": 0
			}
		}
	}
}

Java API

//设置一个叫	types 聚合,聚合字段是types(这里可以多个),然后 size = 0 标示全局
AggregationBuilder<?> aggregation = AggregationBuilders.terms("types").field("types").size(0);
SearchRequestBuilder srb = client.prepareSearch(BaseMapping.index);
srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
SearchResponse response = srb.execute().actionGet();

Aggregations agg = response.getAggregations();		
//取到聚合数据
Terms types = agg.get("types");

哦了!


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/150.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Elasticsearch 聚合aggregation查询返回所有
Elasticsearch 随机返回数据 API
Elasticsearch教程 ,Elasticsearch count 查询Elasticsearch 查询是否存在
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
Elasticsearch 教程,Elasticsearch 日期查询详解,Elasticsearch Date 查询Java API
Elasticsearch教程(五) elasticsearch Mapping的创建
Elasticsearch教程,Elasticsearch配置文件 — elasticsearch.yml
JQuery Ajax四种写法,Ajax请求返回JSON 操作Demo
Elasticsearch教程(四) elasticsearch head 插件安装和使用
Java API接口返回不是JSON的解决方案,SpringMVC返回JSON配置。
最新文章
dns污染怎么解决?为什么会出现这种情况? 22
怎么加密html网页代码 74
老黄历有红色和绿色是什么意思?它们有的寓意? 120
揭秘手机号码的神秘吉凶之谜 218
qq号吉凶号码查询-qq号吉凶真的有影响吗? 276
java json字符串转json对象 2958
JSON文件如何转换为txt文件 2120
如何判断字符串是JSON数组还是JSON对象 493
json对象与json字符串的转换方法 2119
如何解析JSON数据(详细解答) 1502
最热文章
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 673184
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 666920
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 588836
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 546339
免费天气API,天气JSON API,不限次数获取十五天的天气预报 520117
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 508180
Elasticsearch教程(四) elasticsearch head 插件安装和使用 477731
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 253374
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 243109
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 223151
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...