当前位置: 首页 > 知识库问答 >
问题:

如何在嵌套文档上聚合每个桶的子桶

魏彦
2023-03-14

完整示例代码:

https://gist.github.com/anonymous/329EAAF5654096C529DA

"mappings": {
        "product": {
            "properties" : {
                "name":
                {
                    "type": "string",
                    "fields": {
                        "raw":   { "type": "string", "analyzer": "lowercase" }
                    },
                    "analyzer": "default"

                },
                "options" : {
                    "type": "nested",
                    "properties": {
                        "id": {"type": "integer"}, 
                        "name": {"type": "string"},
                        "values": {"type": "nested"}
                    }
                },
                "price":{"type": "integer"},
                "createdAt": {
                    "type": "date",
                    "format": "basic_date_time"
                }
            }
        }
    }
"aggregations": {
      "options": {
         "nested": {
            "path": "options"
         },
         "aggs": {
            "options_ids": {
               "terms": {
                  "field": "id"
               }
            },
            "aggs": {
               "nested": {
                  "path": "options.values"
               },
               "aggs": {
                  "options_values_ids": {
                     "terms": {
                        "field": "options.values.id"
                     }
                  }
               }
            }
         }
      }
}
"aggregations": {     
      "options": {
         "doc_count": 4,
         "options_ids": {
            "buckets": [
               {
                  "key": 1,
                  "doc_count": 2
               },
               {
                  "key": 2,
                  "doc_count": 2
               }
            ]
         },
         "aggs": {
            "doc_count": 7,
            "options_values_ids": {
               "buckets": [
                  {
                     "key": 1,
                     "doc_count": 2
                  },
                  {
                     "key": 5,
                     "doc_count": 2
                  },
                  {
                     "key": 2,
                     "doc_count": 1
                  },
                  {
                     "key": 3,
                     "doc_count": 1
                  },
                  {
                     "key": 6,
                     "doc_count": 1
                  }
               ]
            }
         }
      }
   }

共有1个答案

东郭弘
2023-03-14

您需要嵌套聚合:

"aggregations": {
   "options" : {
      "aggs" : {
         "options_ids" : {
            "aggs" : {
               "aggs" : {
                  "options_values_ids" : {
                     "terms" : {
                        "field" : "options.values.id"
                     }
                  }
               },
               "nested" : {
                  "path" : "options.values"
               }
            },
            "terms" : {
               "field" : "id"
            }
         }
      },
      "nested" : {
         "path" : "options"
      }
   }
}
 类似资料:
  • 问题内容: 我正在尝试过滤存储桶中的嵌套聚合。 对应: 索引数据: 我正在使用此查询和聚合定义 我从聚合结果中得到的是: 我在筛选存储桶列表时遇到了麻烦,因为它们只能提供所提供的事件ID,因此结果应类似于: 问题答案: 您快到了,只需要在聚合中添加过滤器即可,如下所示: 原因是您的查询将正确选择具有指定事件ID的嵌套事件的所有文档,但是,汇总将对所有选定文档中的所有嵌套事件进行处理。因此,您还需要

  • 多亏了这里的人的帮助,我成功地在我的文档中找到了两个ID,并在另一个集合中找到了他们的代表文档。我需要采取的下一步是进一步查找一个“嵌套”ID(引用另一个集合中的文档)。 其结果如下: 我希望chieftain部分是这样的(这就是没有添加'last'$lookup'的chieftain文档的样子):

  • 我在elasticsearch中有以下一组嵌套的子聚合(field d2是field d1的子聚合,field d3是field d2的子聚合)。然而,事实证明,field d3的术语聚合不会存储没有field d3的文档。 我的理解是,除了字段3的术语查询之外,我还必须使用缺少子聚合查询来存储这些查询。 但我不确定如何将其添加到下面的查询中以存储两者。

  • 我正在尝试设置一个搜索查询,该查询应通过多级嵌套字段复合聚合集合,并从该集合中提供一些子聚合指标。我能够按预期使用其存储桶获取复合聚合,但所有存储桶的子聚合指标都带有。我不确定我是否未能正确指出子聚合应考虑哪些字段,或者它是否应放置在查询的不同部分中。 我的收藏看起来类似于以下内容: 贝娄,你可以找到我已经尝试了。尽管所有文档都有一个设置的点击值,但所有存储桶都带有点击总数。 到目前为止,我的回应

  • 在这里,我得到了错误: “无效的术语聚合顺序路径[price>price>price.max]。术语桶只能在子聚合器路径上排序,该路径由路径中的零个或多个单桶聚合和路径末尾的最终单桶或度量聚合组成。子路径[price]指向非单桶聚合” 如果我按持续时间聚合排序,查询可以正常工作,如 那么,有什么方法可以通过嵌套字段上的嵌套聚合来排序聚合吗?

  • 如何聚合一个值在嵌套在Elasticsearch嵌套位置?我对一个嵌套对象没有问题,但在嵌套对象内的嵌套我感到困惑... 样本数据: 欲望结果: 在索引映射中,我将cat_a和条目字段的类型设置为嵌套,当我从工具字段查询聚合时,在cat_a的根(级别1)中没有问题,并且可以工作,但是在聚合中在rx_a(这是在第2级)我不能检索结果,它或空或显示错误,因为我的错误查询。 查询级别1 agg: 如何处