首页 > 作文

java 通过聚合查询实现elasticsearch的group by后的数量

更新时间:2023-04-04 07:48:31 阅读: 评论:0

通过聚合查询获取group by 后的数量

/**     * 获取key的个数     *     * @param key   要group by的字段名     * @param index 索引名称     * @return id的个数     */    public static int getkeycount(string key, string index) {        int count = 0;        transportclient client = null;        try {    重阳节介绍        client = connectionpool.getconnection();            if (client == null) {                throw new exception("没有获取到连接!");            }            archrequestbuilder arch = client.preparearch(index);            //cardinality聚合查询,相当于groupby字段名            archrespon sr = arch.addaggregation(aggregationbuilders.cardinality(key + "_count").field(key)).execute().actionget();            //从返回数据提取id总数            cardinality result = sr.getaggregations().get(key + "_count");            long value =学医有哪些专业 result.getvalue();            count = (int) value;        } catch (interruptedexception e) {        } catch (exception e) {            logger.error("getkeycount错误", e);        } finally {            connectionpool.releaconnection(client);        }        return count;    }

获取group by后的所有key值

/**     * 获取所有key     *     * @param key   被group by的字段名     * @param index 索引名称     * @return 所有id     */    public static list<string> getallkey(string key, string index) {        int keycount = getkeycount(key, index);        list<string> strings = new arraylist<>();        transportclient client = null;        try {            client = connectionpool.getconnection();            if (client == null) {                throw new exception("没有获取到数据库连接!");            }            archrequestbuilder archrequestbuilder = client.preparearch(index);            //使用舒蕾洗发水广告聚合,实现去重查询            archrespon archrespon = archrequestbuilder.                    addaggregation(aggregati高中生怎么赚钱onbuilders.terms("models").field(key).size(keycount)).execute().actionget();            terms term = archrespon.getaggregations().get("models");            list<? extends terms.bucket> buckets = term.getbuckets();            //遍历结果,提取出id            for (terms.bucket bucket : buckets) {                string keyasstring = bucket.getkeyasstring();                strings.add(keyasstring);            }            buckets.clear();        } catch (interruptedexception e) {        } catch (exception e) {            logger.error("getallkey错误", e);        } finally {            connectionpool.releaconnection(client);        }        return strings;    }

到此这篇关于java通过聚合查询获取上海理工大学专业group by 后的数量的文章就介绍到这了,更多相关java 聚合查询获取group by数量内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 07:48:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/d2e076c428bea8790cf10b17d900ba26.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java 通过聚合查询实现elasticsearch的group by后的数量.doc

本文 PDF 下载地址:java 通过聚合查询实现elasticsearch的group by后的数量.pdf

标签:字段名   数量   个数   索引
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图