1.AggregationGlobal是不受其他的Query的影响的:
测试数据:
shirt,10
shose,20
shirt,20
trouser,40
trouser,50
blouse,40
blouse,60
2.测试代码
Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("127.0.0.1", 9300));
AggregationBuilders
.global("agg")
.subAggregation(AggregationBuilders.terms("genders").field("gender"));
SearchResponse sr = client.prepareSearch("mytest").setTypes("logs")
.setQuery(QueryBuilders.termQuery("price", 20))
.addAggregation(AggregationBuilders
.global("global")
.subAggregation(AggregationBuilders.terms("totalPrices").field("price")))
.execute().actionGet();
Global agg = sr.getAggregations().get("global");
System.out.println(agg.getDocCount()); // Doc count
SearchHits hits = sr.getHits();
if (null == hits || hits.totalHits() == 0) {
System.out.println("对不起,您没有查询到结果!!");
}
else {
for (SearchHit hit : hits) {
String json = hit.getSourceAsString();
System.out.println(hits.getTotalHits());
System.out.println(json);
}
}
代码执行结果:
globalCount:7
{"type":"shirt","price":10}
{"type":"shose","price":20}
{"type":"shirt","price":20}
{"type":"trouser","price":40}
{"type":"trouser","price":50}
{"type":"blouse","price":40}
{"type":"blouse","price":60}
3.测试代码
<span style="white-space:pre"> </span>Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("127.0.0.1", 9300));
AggregationBuilders
.global("agg")
.subAggregation(AggregationBuilders.terms("genders").field("gender"));
SearchResponse sr = client.prepareSearch("mytest").setTypes("logs")
.setQuery(QueryBuilders.termQuery("price", 20))
.addAggregation(AggregationBuilders
.global("global")
.subAggregation(AggregationBuilders.terms("totalPrices").field("price")))
.execute().actionGet();
Global agg = sr.getAggregations().get("global");
System.out.println("globalCount:"+agg.getDocCount()); // Doc count
SearchHits hits = sr.getHits();
if (null == hits || hits.totalHits() == 0) {
System.out.println("对不起,您没有查询到结果!!");
}
else {
for (SearchHit hit : hits) {
String json = hit.getSourceAsString();
System.out.println(json);
}
}
测试结果:
globalCount:7
{"type":"shose","price":20}
{"type":"shirt","price":20}
4.综上所述:
AggregationGlobal和Query是不相互影响的,都在分别发挥作用。