首页 > 编程语言 >es java 分组查询

es java 分组查询

时间:2023-11-01 19:45:30浏览次数:35  
标签:indexName searchSourceBuilder req AggregationBuilders field dataSourceAgg 分组 jav

    public Long getEventGroupDivceCont(LogRequest req) {

        String indexName;
        if (req.getAppId() == null) {
            indexName = indexNameGenerator.structuredLogPrefixWithoutAppId() + "*";
        } else {
            indexName = indexNameGenerator.structuredLogPrefix() + "*";
        }
        // 创建搜索对象
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        setQuery(boolQueryBuilder, req);

        SearchRequest searchRequest = new SearchRequest(indexName);
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(boolQueryBuilder);
        searchSourceBuilder.size(0);


        AggregationBuilder aggregationBuilder = AggregationBuilders.terms("deviceCode1").field("deviceCode.keyword").size(100000);
//        TermsAggregationBuilder dataSourceAgg = AggregationBuilders.terms("dataSourceId").field("dataSourceId");
//        TermsAggregationBuilder systemIdAgg = AggregationBuilders.terms("systemId").field("systemId");
//        dataSourceAgg.subAggregation(systemIdAgg);
//        aggregationBuilder.subAggregation(dataSourceAgg);

        searchSourceBuilder.aggregation(aggregationBuilder);
        searchRequest.source(searchSourceBuilder);

        try {
            SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
            // 处理响应结果
            SearchHits searchHits = searchResponse.getHits();
            // 总条数
            return searchHits.getTotalHits().value;
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0L;
    }

 

标签:indexName,searchSourceBuilder,req,AggregationBuilders,field,dataSourceAgg,分组,jav
From: https://www.cnblogs.com/kkvt/p/17803935.html

相关文章

  • java new(创建)对象时结尾带上{}和不带的区别
    定义一个对象publicclassPerson{publicvoidsay(){System.out.println("hello");}}熟悉(正常)的创建对象方式Personp1=newPerson();不熟悉的创建方式Personp2=newPerson(){};那二者有什么区别?我们可以先打印出类的信息看看public......
  • java八大特性
    简单性面向对象跨平台/可移植性分布式多线程健壮性安全性高性能 ......
  • 修改token有效期工具 Another Redis Desktop Manager
     1、获取到redis的host和密码登录2、根据要使用的token查询出数据,修改TTL字段值未-1保存即可。 ......
  • [学习笔记]TypeScript查缺补漏(二):类型与控制流分析
    @目录类型约束基本类型联合类型控制流分析instanceof和typeof类型守卫和窄化typeof判断instanceof判断in判断内建函数,或自定义函数赋值布尔运算保留共同属性字面量类型(literaltype)asconst作用类型约束TypeScript中的类型是一种用于描述变量、函数参数和函数返回值的特征的方......
  • [CF576E] Painting Edges
    PaintingEdges动态加边和二分图容易想线段树分治,分别维护k种颜色的并查集。不过每条边的存在时间不能确定。设边i的两次操作的时间为\(x_i,y_i\),那么对于\(t\in[x_i+1,y_i-1]\)有两种情况,颜色改变或改色不变。则我们把每次操作影响的时间放在树上,从左到右递归到叶......
  • kettle/ckettle进行参数对称加解密-AES为例
    ckettle/kettle字段加密对称加密机制方法调用链kettle-core-2.3.0.1-SNAPSHOT.jar:进行秘钥加密保护(不涉及实际业务处理) org.pentaho.di.core.encryption.Encr org.pentaho.di.core.encryption.TwoWayPasswordEncoderInterface 使用BigInteger进行或运算来进行秘钥加密解......
  • 【javascript】关于匿名函数
    什么是匿名函数?没有名字的函数,叫匿名函数,匿名函数主要有以下几种常用的场景:回调函数,直接执行函数,箭头函数什么是回调函数?回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。(作为参数传递到另外一个函数中,这个作为参数......
  • PostgreSQL技术大讲堂 - 第31讲:SQL调优技巧
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。 第31讲:SQL调优技巧 第31讲预告:10月28日(周六)19:30-20:30......
  • JavaScript模态框无法弹出的问题
    可能是复制的时候class内缺少了 bs-example-modal-lg导致的 修改代码如下:<divclass="modalfadebs-example-modal-lg"tabindex="-1"role="dialog"aria-labelledby="myLargeModalLabel"><divclass="modal-dialogmodal-lg&q......
  • F. Unique Occurrences(线段树分治+可撤销并查集)
    F.UniqueOccurrences假如我们删除所有权值为x的边,那么所有权值为x的边对答案的贡献就是\(\sumsz[u]*sz[v]\)sz表示两个联通块的大小,且(u,v)的边权为x我们可以用可撤销并查集来进行处理,简单来说就是将一条边的存在时间看作区间,然后挂到线段树上,然后遍历到每个叶子的时候进行......