zoukankan      html  css  js  c++  java
  • SpringBoot+ElasticSearch聚合查询+条件查询

    SpringBoot+ElasticSearch聚合查询+条件查询

    es7.0以上

    对应mysql语句

    select state,count(state) countState from indexName where is_delete=0 group by state
    
    1.指定查询的索引
    SearchRequest searchRequest = new SearchRequest(indexName);
    
    2.构建过滤条件
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    
    3.构建聚合条件:根据state字段进行分组
    AggregationBuilder aggregationBuilder = AggregationBuilders.terms("state").field("state");
    
    4.构建查询条件:查询未删除
    BoolQueryBuilder filterQuery = QueryBuilders.boolQuery();
    filterQuery.must(QueryBuilders.termQuery("isDelete", 0));
    
    5.将聚合条件和查询条件放入过滤条件中
    searchSourceBuilder.aggregation(aggregationBuilder);
    searchSourceBuilder.query(QueryBuilders.boolQuery().filter(filterQuery));
    
    
    6.将过滤条件放入指定索引中
    searchRequest.source(searchSourceBuilder);
    
    7.查询
    SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
    
    8.解析查询到结果
    	//map:key=分组的状态,value=每组的个数
      Map<String, Integer> stateCountMap = new LinkedHashMap<>();
    			//拿到聚合结果
                Terms terms = response.getAggregations().get(Fn.getName(EsTaskEntity::getState));
    			//遍历聚合结果
                for (Terms.Bucket bucket : terms.getBuckets()) {
    				//getKeyAsString():分组之后每个详细的值
    				//bucket.getDocCount() 分组之后每个值得个数
                    stateCountMap.put(bucket.getKeyAsString(), Long.valueOf(bucket.getDocCount()).intValue());
                }
    
  • 相关阅读:
    转ihone程序内发邮件,发短信,打开链接等
    plist 文件的读写
    转object c语法速成
    转iphone项目之间的引用。
    object c求nsstring 长度和去掉前后空格的方法
    object c runtime中类类型和消息支持检查
    转NSDictionary类使用
    设置UITableview 浮动的 header
    NSString 类型plist转为NSDictionary
    ObjectiveC Unicode 转换成中文
  • 原文地址:https://www.cnblogs.com/shuxiaosheng/p/15572782.html
Copyright © 2011-2022 走看看