elasticsearch聚合查询
作者注:本文系作者自己的理解.希望大家多多交流指正
官网java API
term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词,所以我们的搜索词必须是文档分词集合中的一个
TermsBuilder:构造聚合函数
AggregationBuilders:创建聚合函数工具类
BoolQueryBuilder:拼装连接(查询)条件
QueryBuilders:简单的静态工厂”导入静态”使用。主要作用是查询条件(关系),如区间\精确\多值等条件
NativeSearchQueryBuilder:将连接条件和聚合函数等组合
SearchQuery:生成查询
elasticsearchTemplate.query:进行查询
Aggregations:Represents a set of computed addAggregation.代表一组添加聚合函数统计后的数据
Bucket:满足某个条件(聚合)的文档集合
使用示例:
public Map<String, Long> yananList(String str) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MONTH, -1);
long start=c.getTimeInMillis();
long end=System.currentTimeMillis();
Map<String, Long> map = new HashMap<String, Long>();
//子查询
TermsBuilder tb= AggregationBuilders.terms("yanan7890")
.field("需要聚合的字段").order(Terms.Order.count(false)).size(int size(默认10)); //yanan7890是为聚合取的名称,false降序,true升序
//查询条件
BoolQueryBuilder bqb = QueryBuilders.boolQuery();
bqb.must(QueryBuilders.termQuery(string name, str);
bqb.must(QueryBuilders.rangeQuery("starttime").gt(start));// 大于
bqb.must(QueryBuilders.rangeQuery("endtime").lt(end));// 小于
//执行查询条件
/**
*SearchType.COUNT,Only counts the results, will still execute facets and the like.
*EsIndexs.yanan7890指定索引
*/
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(bqb)
.withSearchType(SearchType.COUNT)
.withIndices(EsIndexs.yanan7890)
.addAggregation(tb).build();
// when
Aggregations aggregations = elasticsearchTemplate.query(searchQuery,
new ResultsExtractor<Aggregations>() {
@Override
public Aggregations extract(SearchResponse response) {
return response.getAggregations();
}
});
LongTerms modelTerms = (LongTerms) aggregations.asMap().get("yanan7890");//yanan7890是前面指定的聚合名称.
Iterator<Bucket> modelBucketIt = modelTerms.getBuckets().iterator();
while (modelBucketIt.hasNext()) {
Bucket actiontypeBucket = modelBucketIt.next();
//actiontypeBucket.getKey().toString()聚合字段的相应名称,actiontypeBucket.getDocCount()相应聚合结果
map.put(actiontypeBucket.getKey().toString(),
actiontypeBucket.getDocCount());
}
return map;
elasticsearch聚合查询的更多相关文章
- Spring Data Elasticsearch 聚合查询
如需要统计某件商品的数量,最高价格,最低价格等就用到了聚合查询,就像数据库中的group by 首先需要注入ElasticsearchTemplate @Autowired private Elast ...
- 2018/2/13 ElasticSearch学习笔记三 自动映射以及创建自动映射模版,ElasticSearch聚合查询
终于把这些命令全敲了一遍,话说ELK技术栈L和K我今天花了一下午全部搞定,学完后还都是花式玩那种...E却学了四天(当然主要是因为之前上班一直没时间学,还有安装服务时出现的各种error真是让我扎心了 ...
- ElasticSearch 聚合查询百分比
这里用的是es5.6.9 bucket_script :它执行一个脚本,该脚本可以对多桶聚合中的指定度量执行每桶计算,指定的度量标准必须为数字,并且脚本必须返回数值. 官方语法 https://www ...
- elasticsearch 聚合查询
1. 按照 tags 字段 进行分组 GET /ecommerce/product/_search{ "size": 0, "aggs": { &quo ...
- Elasticsearch(9) --- 聚合查询(Bucket聚合)
Elasticsearch(9) --- 聚合查询(Bucket聚合) 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metri ...
- ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合
Title:ElasticSearch实战系列四: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合 前言 在上上一篇中介绍了ElasticSearch实战系列三: Elas ...
- java使用elasticsearch分组进行聚合查询(group by)-项目中实际应用
java连接elasticsearch 进行聚合查询进行相应操作 一:对单个字段进行分组求和 1.表结构图片: 根据任务id分组,分别统计出每个任务id下有多少个文字标题 .SQL:select id ...
- Elasticsearch(8) --- 聚合查询(Metric聚合)
Elasticsearch(8) --- 聚合查询(Metric聚合) 在Mysql中,我们可以获取一组数据的 最大值(Max).最小值(Min).同样我们能够对这组数据进行 分组(Group).那么 ...
- elasticsearch 常见查询及聚合的JAVA API
ES 常见查询 (1)根据ID 进行单个查询 GetResponse response = client.prepareGet("accounts", "person&q ...
随机推荐
- Linux下SVN提交时强制写日志
Linux版本: 1.在svn的hooks目录下新建一个名为pre-commit的文件并为其添加执行权限(用vi pre-commit直接创建) 2.pre-commit文件的内容如下: #!/bin ...
- SharePoint客户端js对象模型
'use strict'; var context = SP.ClientContext.get_current(); var user = context.get_web().get_current ...
- 【ASP.NET Core分布式项目实战】(二)oauth2 + oidc 实现 server部分
本博客根据http://video.jessetalk.cn/my/course/5视频整理(内容可能会有部分,推荐看源视频学习) 资料 我们基于之前的MvcCookieAuthSample来做开发 ...
- IdentityServer Topics(4)- 登录
为了使IdentityServer代表用户发布令牌,该用户必须登录到IdentityServer. Cookie认证 使用来自ASP.NET Core的cookie身份验证处理程序管理的cookie跟 ...
- uboot中 make xxx_config 的作用(以make smdk2410_config为例)
1.创建到目标板相关文件的链接 ln -s asm-arm asm ln -s arch-s3c24x0 asm-arm/arch ln -s proc-armv asm-arm/proc 2.创建i ...
- Zabbix实战-简易教程(3)--DB安装和表分区
一.DB安装环境 主机角色 主机IP VIP 操作系统版本 软件版本 DB Master A 192.168.1.97 (主从) CentOS 6.5 64bit mysql-5.6.21 DB Sl ...
- javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
前言 今天一个朋友让我帮他做一下tomcat的https配置,中间遇到了标题中这个错误,因此记录了一下过程,服务器.域名.证书.tomcat都已经准备好,就是需要配置一下即可,用的是阿里云的证书服务, ...
- CSS文本超出2行就隐藏并且显示省略号
今天做东西,遇到了这个问题,百度后总结得到了这个结果. 首先,要知道css的三条属性. overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用 ...
- C/C++中substr函数的应用(简单讲解)
substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 subst ...
- [bzoj2288][POJ Challenge]生日礼物
用堆维护双向链表来贪心... 数据范围显然不容许O(nm)的傻逼dp>_<..而且dp光是状态就n*m个了..显然没法优化 大概就会想到贪心乱搞了吧...一开始想贪心地通过几段小的负数把正 ...