java 通過(guò)聚合查詢實(shí)現(xiàn)elasticsearch的group by后的數(shù)量
通過(guò)聚合查詢獲取group by 后的數(shù)量
/** * 獲取key的個(gè)數(shù) * * @param key 要group by的字段名 * @param index 索引名稱 * @return id的個(gè)數(shù) */ public static int getKeyCount(String key, String index) { int count = 0; TransportClient client = null; try { client = connectionPool.getConnection(); if (client == null) { throw new Exception("沒有獲取到連接!"); } SearchRequestBuilder search = client.prepareSearch(index); //cardinality聚合查詢,相當(dāng)于groupby字段名 SearchResponse sr = search.addAggregation(AggregationBuilders.cardinality(key + "_count").field(key)).execute().actionGet(); //從返回?cái)?shù)據(jù)提取id總數(shù) Cardinality result = sr.getAggregations().get(key + "_count"); long value = result.getValue(); count = (int) value; } catch (InterruptedException e) { } catch (Exception e) { logger.error("getKeyCount錯(cuò)誤", e); } finally { connectionPool.releaseConnection(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("沒有獲取到數(shù)據(jù)庫(kù)連接!"); } SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index); //使用聚合,實(shí)現(xiàn)去重查詢 SearchResponse searchResponse = searchRequestBuilder. addAggregation(AggregationBuilders.terms("models").field(key).size(keyCount)).execute().actionGet(); Terms term = searchResponse.getAggregations().get("models"); List<? extends Terms.Bucket> buckets = term.getBuckets(); //遍歷結(jié)果,提取出id for (Terms.Bucket bucket : buckets) { String keyAsString = bucket.getKeyAsString(); strings.add(keyAsString); } buckets.clear(); } catch (InterruptedException e) { } catch (Exception e) { logger.error("getAllKey錯(cuò)誤", e); } finally { connectionPool.releaseConnection(client); } return strings; }
到此這篇關(guān)于Java通過(guò)聚合查詢獲取group by 后的數(shù)量的文章就介紹到這了,更多相關(guān)Java 聚合查詢獲取group by數(shù)量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Maven項(xiàng)目本地公共common包緩存問題
這篇文章主要介紹了解決Maven項(xiàng)目本地公共common包緩存問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問題
這篇文章主要介紹了詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04IDEA java出現(xiàn)無(wú)效的源發(fā)行版14解決方案
這篇文章主要介紹了IDEA java出現(xiàn)無(wú)效的源發(fā)行版14解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11SpringBoot項(xiàng)目在IntelliJ IDEA中如何實(shí)現(xiàn)熱部署
spring-boot-devtools是一個(gè)為開發(fā)者服務(wù)的一個(gè)模塊,其中最重要的功能就是自動(dòng)應(yīng)用代碼更改到最新的App上面去。,這篇文章主要介紹了SpringBoot項(xiàng)目在IntelliJ IDEA中如何實(shí)現(xiàn)熱部署,感興趣的小伙伴們可以參考一下2018-07-07java實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12SpringBoot簡(jiǎn)單實(shí)現(xiàn)定時(shí)器過(guò)程
這篇文章主要介紹了SpringBoot簡(jiǎn)單實(shí)現(xiàn)定時(shí)器過(guò)程,對(duì)于Java后端來(lái)說(shuō)肯定實(shí)現(xiàn)定時(shí)功能肯定是使用到Spring封裝好的定時(shí)調(diào)度Scheduled2023-04-04