es的嵌套聚合、嵌套分析、下钻分析案例学习之Elasticsearch 07

es的restful api在学习和理解es的所欲知识点和功能点: 1、es最重要的api,让我们进行各种尝试、学习甚至在某些环境下进行使用的api,就是restful api。如果你学习不用es restful api,比如我上来就用java api来学习es,也是可以的,但是你根本就漏掉了es知识的一大块,你都不知道它最重要的restful api是怎么用的2、学习用esrestf
摘要由CSDN通过智能技术生成

 

es的restful api在学习和理解es的所欲知识点和功能点:

 

1、es最重要的api,让我们进行各种尝试、学习甚至在某些环境下进行使用的api,就是restful api。如果你学习不用es restful api,比如我上来就用java api来学习es,也是可以的,但是你根本就漏掉了es知识的一大块,你都不知道它最重要的restful api是怎么用的

2、学习用esrestful api,更加方便,快捷,不用每次都写大量的java代码,能加快关注es本身的知识和功能的学习

 

 

 

第一个分析需求

计算每个tag下的商品数量

 

GET/ecommerce/product/_search

{

  "aggs": {

    "group_by_tags": {

      "terms": { "field":"tags" }

    }

  }

}

会报这个错误

 

将文本field的fielddata属性设置为true

PUT/ecommerce/_mapping/product

{

  "properties": {

    "tags": {

      "type": "text",

      "fielddata": true

    }

  }

}

设置后显示

{

  "acknowledged": true

}

 

 

 

GET/ecommerce/product/_search

{

  "size": 0,

  "aggs": {

    "all_tags": {

      "terms": { "field":"tags" }

    }

  }

}

 

{

  "took": 20,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 4,

    "max_score": 0,

    "hits": []

  },

  "aggregations": {

    "group_by_tags": {

      "doc_count_error_upper_bound":0,

      "sum_other_doc_count": 0,

      "buckets": [

        {

          "key": "fangzhu",

          "doc_count": 2

        },

        {

          "key": "meibai",

          "doc_count": 2

        },

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现 Elasticsearch嵌套聚合查询,你可以使用 Elasticsearch 的 AggregationBuilders 类来创建嵌套聚合查询。具体实现步骤如下: 1. 创建一个嵌套聚合查询,用于组合多个子聚合查询。 2. 在嵌套聚合查询中添加多个子聚合查询,分别对应不同的聚合方式。 3. 如果你需要对子聚合查询进行分组,可以在子聚合查询中添加 terms 聚合查询。 4. 如果你需要对子聚合查询进行计数,可以在子聚合查询中添加 count 聚合查询。 5. 执行查询并处理结果。 以下是一个示例 Java 代码,用于实现 Elasticsearch嵌套聚合查询: ``` SearchResponse response = client.prepareSearch("index_name") .addAggregation( AggregationBuilders.nested("nested_agg", "nested_field") .subAggregation(AggregationBuilders.terms("term_agg") .field("term_field")) .subAggregation(AggregationBuilders.count("count_agg") .field("count_field"))) .execute() .actionGet(); Nested nestedAgg = response.getAggregations().get("nested_agg"); Terms termAgg = nestedAgg.getAggregations().get("term_agg"); long totalCount = nestedAgg.getAggregations().get("count_agg").getDocCount(); ``` 其中,"index_name" 是你要查询的索引名称,"nested_field" 是你要进行嵌套聚合查询的字段名称,"term_field" 和 "count_field" 分别是你要进行分组和计数的字段名称。你可以根据实际情况进行修改。执行完查询后,你可以从查询结果中获取嵌套聚合对象,并进一步获取子聚合对象的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值