前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES聚合操作

ES聚合操作

作者头像
shengjk1
发布2020-07-22 17:09:17
9730
发布2020-07-22 17:09:17
举报
文章被收录于专栏:码字搬砖

ES 聚合操作网上资料很乱,现简述一下工作中比较常用的方式

代码语言:javascript
复制
select sum(memory) from courier_app_statitics group by cid where day>=20200716 and city_id=3101

与此等价的代码

代码语言:javascript
复制
TransportClient transportClient = getTransportClient("xxxxxx:9300");
		
		BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
		boolQueryBuilder.must(QueryBuilders.matchQuery("city_id", 3101));
		RangeQueryBuilder rangeQueryBuilder = new RangeQueryBuilder("day").gte(20200716);
		boolQueryBuilder.must(rangeQueryBuilder);
		SearchRequestBuilder srb = transportClient
				.prepareSearch()
				.setIndices("index").setTypes("type")
				.setQuery(boolQueryBuilder);
		
		SumAggregationBuilder sumCancelOrders = AggregationBuilders.sum("cid").field("memory");
		srb.addAggregation(sumCancelOrders);
		
		SearchResponse searchResponse = srb.get();
		InternalSum sum = searchResponse.getAggregations().get("courier_id");
		System.out.println("sum.getValue() = " + sum + "==" + (int) sum.getValue());



/**
	 * @param ESAddress
	 * @return
	 * @throws UnknownHostException
	 */
	public static TransportClient getTransportClient(String ESAddress) throws UnknownHostException {
		System.setProperty("es.set.netty.runtime.available.processors", "false");
		Settings settings = Settings.builder()
				//集群名称
//				.put("cluster.name", "onesearch")
				.put("client.transport.ignore_cluster_name", true)
				//自动嗅探
				.put("client.transport.sniff", true)
				.build();
		PreBuiltTransportClient preBuiltTransportClient = new PreBuiltTransportClient(settings);
		LOGGER.info("ESAddress {}", ESAddress);
		for (String s : ESAddress.split(",", -1)) {
			String[] split = s.split(":", -1);
			preBuiltTransportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(split[0]), Integer.parseInt(split[1])));
		}
		return preBuiltTransportClient;
	}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档