文档章节

elasticsearch 学习之路-过滤后聚合(FilterAggregationBuilder)

 潘鸿
发布于 2017/04/20 11:51
字数 229
阅读 686
收藏 18

FilterAggregationBuilder:是elasticsearch 中过滤后,聚合一个神奇工具,官网例子:

POST /sales/_search?size=0
{
    "aggs" : {
        "t_shirts" : {
            "filter" : { "term": { "type": "t-shirt" } },
            "aggs" : {
                "avg_price" : { "avg" : { "field" : "price" } }
            }
        }
    }
}

显示 类型 t-shirt 的平均价格,先根据类型过滤,然后在进行聚合计算

在java api 中使用的例子:其中某些值需要使用者,修改,

AggregationBuilder aggregation= AggregationBuilders.terms("customer").field("province.raw");
//新增客户
BoolQueryBuilder addCustomer=QueryBuilders.boolQuery();
addCustomer.must(QueryBuilders.rangeQuery("start_time").from(System.currentTimeMillis()-(10*1000 * 60 * 60 * 24)).to(
        Instant.now().toEpochMilli()));
FilterAggregationBuilder addAggregationBuilder= AggregationBuilders.filter("add",
        addCustomer).subAggregation(aggregation);
//新增签约
BoolQueryBuilder addSignBuilder=QueryBuilders.boolQuery();
//客户id
addSignBuilder.must(QueryBuilders.termsQuery("id.raw","36v91l0mrP_76359904-5274-4a0a-a4ac-9cffb64ef079"));
//客户创建时间
addSignBuilder.must(QueryBuilders.rangeQuery("start_time").from(System.currentTimeMillis()-(10*1000 * 60 * 60 * 24)).to(
        Instant.now().toEpochMilli()));
FilterAggregationBuilder  addSignAggBuilder= AggregationBuilders.filter("add_sign",
        addSignBuilder).subAggregation(aggregation);
//签约客户
BoolQueryBuilder sign=QueryBuilders.boolQuery();
//客户id
sign.must(QueryBuilders.termsQuery("id.raw","36v91l0mrP_76359904-5274-4a0a-a4ac-9cffb64ef079"));
//
FilterAggregationBuilder signAggBuilder= AggregationBuilders.filter("sign",
        sign).subAggregation(aggregation);
SearchRequestBuilder searchRequestBuilder=EsClient.client.filterWithHeader(headers).prepareSearch("customer_36v91l0mrp*").setTypes("customer").
        setSize(5).setQuery(boolQueryBuilder).setFetchSource(new String[]{"customer_id"},null)
        .addAggregation(addSignAggBuilder).addAggregation(addAggregationBuilder).addAggregation(signAggBuilder);
LOGGER.info("查询条件:"+searchRequestBuilder.toString());
SearchResponse searchResponse=searchRequestBuilder.execute().actionGet();

© 著作权归作者所有

潘鸿

粉丝 16
博文 58
码字总数 11020
作品 0
济南
高级程序员
私信 提问
如何用 Node.js 和 Elasticsearch 构建搜索引擎

Elasticsearch 是一款开源的搜索引擎,由于其高性能和分布式系统架构而备受关注。本文将讨论其关键特性,并手把手教你如何用它创建 Node.js 搜索引擎。 Elasticsearch 概述 Elasticsearch 底...

oschina
2016/09/29
13.5K
6
elasticsearch搜索引擎相关资料(更新中)

最近需要用到elasticsearch搜索引擎,所以搜集了很多相关资料,先放在这里(未详细整理) 一、步骤总结:(linux环境下) 1. 安装 (1)下载elasticsearch安装包:http://www.elasticsearch....

核桃人
2018/03/08
0
0
Elasticsearch如何实现 SQL语句中 Group By 和 Limit 的功能

有 SQL 背景的同学在学习 Elasticsearch 时,面对一个查询需求,不由自主地会先思考如何用 SQL 来实现,然后再去想 Elasticsearch 的 Query DSL 如何实现。那么本篇就给大家讲一条常见的 SQ...

rockybean
2018/05/21
0
0
理解elasticsearch的post_filter

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/89801825 《Elasticsearch 权威指南》中,postfilter出现在聚合章节,描述postfilter的作用...

博陵精骑
05/04
0
0
Elasticsearch初探(1)——基本介绍与环境搭建

版权声明:本文版权归Jitwxs所有,欢迎转载,但未经作者同意必须保留原文链接。 https://blog.csdn.net/yuanlaijike/article/details/82966110 一、Elasticsearch简介 1.1 什么是Elasticsear...

Jitwxs
2018/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
今天
9
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
6
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
8
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
5
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部