用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,就 ...
随机推荐
- 改了改之前那个很糙的XXX
将就着用X度去爬吧 <?php echo "***************************************\r\n"; echo "* SubDom ...
- ysoserial-调试分析总结篇(1)
前言: ysoserial很强大,花时间好好研究研究其中的利用链对于了解java语言的一些特性很有帮助,也方便打好学习java安全的基础,刚学反序列化时就分析过commoncollections,但是 ...
- django之学习前的准备
一.配置环境 Windows 10操作系统 Python安装配置教程参考:https://www.cnblogs.com/huangbiquan/p/7784533.html 安装Python虚拟环境 ...
- Spring AOP使用方式
AOP:全称是Aspect Oriented Programming,面向切面编程 Spring AOP的作用和优势: 作用:在程序运行期间,不修改源码对已有方法进行增强 优势:减少重复代码:提高开发 ...
- springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据
springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...
- 前端每日实战:149# 视频演示如何用纯 CSS 创作一个宝路薄荷糖的动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oagrvz 可交互视频 此视频是可 ...
- 利用iTunes给MP3添加专辑插图
利用iTunes给MP3添加专辑插图 打开iTunes 准备好没有专辑插图的mp3文件和插图 将准备好的mp3文件拖入iTunes 右键菜单选择专辑信息选项 在专辑信息里面选择插图 点击左下角的添加插 ...
- Python 【基础常识概念】
深浅拷贝 浅copy与deepcopy 浅copy: 不管多么复杂的数据结构,浅拷贝都只会copy一层 deepcopy : 深拷贝会完全复制原变量相关的所有数据,在内存中生成一套完全一样的内容,我们 ...
- c++作业22题
一.单选题(共22题,100.0分) 1 已知int i=5,下列do-while循环语句的循环次数是 do{ cout<<i - -<<endl; i - -; }while ...
- go 创建slice的方式
1.直接声明:var slice []int 2.new: slice := *new([]int) 3.字面量:slice := []int{1,2,3,4,5} 4.make: slice := ...