Elasticsearch使用java API 查询时间范围内匹配某个关键字并对查询结果内按某个字段进行GroupBy操作

Elasticsearch使用java API 查询时间范围内匹配某个关键字并对查询结果内按某个字段进行GroupBy操作,我们业务需求是求某个手机前缀在某个时间范围内每个imsi对应的总数

代码如下:

	public void searchByPrefix(List<String> prefixList , String fromTime , String endTime){
		for (String prefix : prefixList) {
			QueryBuilder query = QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery("time").from(fromTime).to(endTime))
					.must(QueryBuilders.wildcardQuery("phone_prefix", prefix));
					//.must(QueryBuilders.matchQuery("phone_prefix", prefix));
			TermsAggregationBuilder builder = AggregationBuilders.terms("count_imsi").field("imsi");
			// ResIndex resIndex =
			// super.selectByPrimaryKey(deviceCountReqVo.getIndexId());
			SearchResponse searchResponse = transportClient.prepareSearch("ori_epotential_res_*").setTypes("ori_epotential_res").setQuery(query).addAggregation(builder)
					.setFrom(0).setSize(5)// 分页
					.get();
			System.out.println(searchResponse.toString());
		}
	}

代码中的:

.must(QueryBuilders.wildcardQuery("phone_prefix", prefix));
.must(QueryBuilders.matchQuery("phone_prefix", prefix));

分别是通配符模糊查询和精确字段匹配。

个人小站点:四川耍耍网 重庆耍耍网 成都耍耍网 川渝耍耍网 四川论坛 重庆论坛 www.cysua.com

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值