• 售前

  • 售后

热门帖子
入门百科

ElasticSearch中aggs里面套aggs的javaAPI实现

[复制链接]
素舒 显示全部楼层 发表于 2022-1-12 15:04:14 |阅读模式 打印 上一主题 下一主题
Kibana命令如下

  1. GET person/_search
  2. {
  3.   "query": {
  4.     "bool": {
  5.       "filter": [
  6.         {
  7.           "match": {
  8.             "address": "外滩"
  9.           }
  10.         }
  11.       ]
  12.     }
  13.    
  14.   },
  15.   "aggs": {
  16.     "age": {
  17.       "terms": {
  18.         "field": "age",
  19.         "size": 10
  20.       },
  21.       "aggs": {
  22.         "name": {
  23.           "terms": {
  24.             "field": "name",
  25.             "size": 10
  26.           }
  27.         }
  28.       }
  29.     }
  30.   }
  31. }
复制代码
运行结果如下:

问题:如何获取aggs里面的aggs数据

将es命令转为JavaAPI代码

[code]package com.yy.esdemo;import org.elasticsearch.action.search.SearchRequest;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestHighLevelClient;import org.elasticsearch.index.query.BoolQueryBuilder;import org.elasticsearch.index.query.MatchPhraseQueryBuilder;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.SearchHits;import org.elasticsearch.search.aggregations.Aggregation;import org.elasticsearch.search.aggregations.AggregationBuilders;import org.elasticsearch.search.aggregations.Aggregations;import org.elasticsearch.search.aggregations.bucket.terms.Terms;import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;import org.elasticsearch.search.builder.SearchSourceBuilder;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;@SpringBootTest()public class countStatusTest {    @Autowired    private RestHighLevelClient client;    @Test    public void test1() throws IOException {        ArrayList indexes = new ArrayList();        // 1.1 构建查询请求对象,指定查询的索引名称        SearchRequest searchRequest = new SearchRequest("person");        //5 创建查询条件构建器 SearchSourceBuilder        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();        // 2 构建boolQuery        BoolQueryBuilder query = QueryBuilders.boolQuery();        // 3 构建各个查询条件        // 3.1 满足是当前索引的内容        MatchPhraseQueryBuilder matchPhraseQuery = QueryBuilders.matchPhraseQuery("address", "外滩");        query.filter(matchPhraseQuery);        //3.2 将这个boolQuery执行        sourceBuilder.query(query);        //3.3 构建agg查询,获取当前路径        TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("age").field("age").size(100);        // 3.4 第二给agg:将当前路径其他状态码过滤出来        aggregationBuilder.subAggregation(AggregationBuilders.terms("name").field("name").size(100));        sourceBuilder.aggregation(aggregationBuilder);        //4 添加查询条件构建器SearchSourceBuilder        searchRequest.source(sourceBuilder);        //6 准确计数        sourceBuilder.trackTotalHits(true);        //1 查询,获取查询结果        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);        // 7 获取聚会结果        Aggregations aggregations = searchResponse.getAggregations();        // 8 将结果转为map        Map aggregationMap = aggregations.asMap();        // 9 获取结果中上面定义的ages里面的数据,并将结果转为Term类型        Terms ages = (Terms) aggregationMap.get("age");        //获取桶里面的数据        List

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作