用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就是车型啦,后面的自然就是总数。
用java分组查elasticsearch的更多相关文章
- Elasticsearch入门系列~通过Java一系列操作Elasticsearch
Elasticsearch索引的创建.数据的增删该查操作 上一章节已经在Linux系统上安装Elasticsearch并且可以外网访问,这节主要通过Java代码操作Elasticsearch 1.创建 ...
- 使用Java客户端操作elasticsearch(二)
承接上文,使用Java客户端操作elasticsearch,本文主要介绍 常见的配置 和Sniffer(集群探测) 的使用. 常见的配置 前面已介绍过,RestClientBuilder支持同时提供一 ...
- Java中使用elasticsearch搜索引擎实现简单查询、修改等操作-已在项目中实际应用
以下的操作环境为:jdk:1.8:elasticsearch:5.2.0 maven架包下载坐标为: <dependency> <groupId>org.elasticsear ...
- Java基础查漏补缺(2)
Java基础查漏补缺(2) apache和spring都提供了BeanUtils的深度拷贝工具包 +=具有隐形的强制转换 object类的equals()方法容易抛出空指针异常 String a=nu ...
- Java基础查漏补缺(1)
Java基础查漏补缺 String str2 = "hello"; String str3 = "hello"; System.out.println(str3 ...
- Java代码解决ElasticSearch的Result window is too large问题
调用ElasticSearch做分页查询时报错: QueryPhaseExecutionException[Result window is too large, from + size must b ...
- java程序查不出数据来
同样的错误,不可再犯第三次!!! 数据库中是char,里面带空格,但在pl/sql中这样写可以查出来.如下: select ipostid from product t where ipostid= ...
- 使用Java客户端操作elasticsearch
Java REST客户端有两种风格: Java低级别REST客户端(Java Low Level REST Client,以后都简称低级客户端算了,难得码字):Elasticsearch的官方low- ...
- SQL to Java code for Elasticsearch
Elasticsearch虽然定位为Search Engine,但是因其可以持久化数据,很多时候,我们把Elasticsearch当成Database用,但是Elasticsearch不支持SQL,就 ...
随机推荐
- hexo-next-travis-ci 构建自动化部署博客
构建效果如上面视频所示,如果浏览器不支持请戳一下链接: 自动化部署构建效果 .只要将编辑的 .md 文件推送到 github 上,博客网站就可以更新这篇文章. 其实差不多半年前也构建过一次,由于安装 ...
- Core Java之7种单例模式
初始化空 初始化创建 一把锁 两把锁 大专栏 Core Java之7种单例模式"headerlink" title="静态内部类">静态内部类 静态加载 ...
- hihoCoder 1128 二分查找
Description Input and Output Codes 描述#1128 : 二分·二分查找 Description Nettle最近在玩<艦これ>,因此Nettle收集了很多 ...
- JavaScript 执行环境以及作用域链
执行环境(execution context,为简单起见,有时也称为"环境")是 JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们 ...
- tp5.1 请求时间格式化
当前时间:{$Request.time|date='Y-m-d H:i:s'} 注意database.php的配置!记录一下!
- 【攻略】如何在云开发中使用 Redis?
默认情况下,云开发的函数部署在公共网络中,只可以访问公网.如果开发者需要访问腾讯云的 Redis.TencentDB.CVM.Kafka 等资源,需要建立私有网络来确保数据安全及连接安全. 本文会演示 ...
- PyQt5之音乐播放器
按照自己思路简单写了个桌面播放器,只有自己喜欢的歌.使用QtDesigner设计的ui界面,功能简单,还有很多bug@~@,代码奉上: music_button.ui使用扩展工具pyuic5生成了mu ...
- RTMP协议推流交互流程
目录 RTMP协议推流交互流程 RTMP协议推流流程 RTMP握手 RTMP建立连接 RTMP建流&Play Wireshark抓个RTMP流 RTMP协议推流交互流程 想了解下直播常见协议R ...
- 桌面运维之Windows快捷键,每一个工程师都是“快捷键”的工程师!
1.win快捷键 首先教大家win7新增的3D效果: Win + Tab 快速切换已打开的程序(和Alt+tab一样的效果) Win + Home 将所有使用中窗口以外的窗口最小化 Win + Spa ...
- 解决Hexo博客模板hexo-theme-next的翻页按钮不正常显示问题
用Hexo搭了个Gitpage的博客,兴冲冲的发了11篇博文后发现翻页按钮不正常显示,显示为<i class="fa fa-angle-right"></i> ...