日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用java分组查elasticsearch

發布時間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用java分组查elasticsearch 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哎,編程路漫漫,一坑又一坑,爬完還會掉,何時是盡頭!

今朝有酒今朝醉,程序不對不敢睡!

還是接口昂,今天還是接口有問題,我是很菜,很笨,但是我還是要努力!!

正文:

接口需求是這樣的,根據車型查詢在線車輛數與總數.哼,挺簡單吧,我也覺得簡單,But,太菜了。

這塊查es,首先要獲取到客戶端

SearchRequestBuilder requestBuilder = transportClient.prepareSearch("索引名稱").setTypes("type名稱");
//這里是要用到一個聚合查詢 直接貼代碼了,我也還有些不懂的,先記錄下來再說 TermsAggregationBuilder termsBuilder = AggregationBuilders.terms("vehicleTypeCount").field("vehicleType");
requestBuilder.addAggregation(termsBuilder);
SearchResponse response = requestBuilder.execute().actionGet(); //得到這個分組的集合
Terms terms = response.getAggregations().get("vehicleTypeCount"); String id = null;
Long count = 0l;
List<Object> list = new ArrayList<>();
HashMap<String, Object> map = new HashMap<>();
for (int i = 0; i < terms.getBuckets().size(); i++) {
//這里的id就是我們查的列名
id = terms.getBuckets().get(i).getKey().toString();
//count自然就是總量啦
count = terms.getBuckets().get(i).getDocCount();
//實際開發中,有時候寫代碼寫蒙了,定義這個map直接map.put(id,count)就完事了,但是實際上map中只會有一條數據,也就是一組kv,然后我是將它組成一個map時放入一個list
//其實我也不想這樣,感覺這樣也不太對,但有時候為了出任務,就不探究根部了,有看了帖子的大佬們如果可以,教我一下哈。(起始id和count每次都代替的是不同的值,但是就是只會有一條數據,難道是jvm只看到了表面字符id,count?)
map.put(id, count);
list.add(map);
}

這樣輸出的結果是: "typeCount": {"1231": 1,"b": 1}
其中123,b就是車型啦,后面的自然就是總數。

轉載于:https://www.cnblogs.com/shuaidong/p/11011848.html

總結

以上是生活随笔為你收集整理的用java分组查elasticsearch的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。