elasticsearch_dsl响应多个bucket聚合

elasticsearch_dsl响应多个bucket聚合,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,找到有关如何使用elasticsearch_dsl构建嵌套聚合的线程 有人可以演示如何迭代响应以获得第二个bucket结果吗 for i in s.aggregations.clients.buckets.num_servers.buckets: 不起作用,否则如何访问num_服务器或服务器列表中的内容?如果要通过第二级聚合循环,则需要两个循环。下面是一个假设索引中有“标签”和“编号”字段的示例: 从elasticsearch导入elasticsearch 从elasticsearch_dsl

找到有关如何使用elasticsearch_dsl构建嵌套聚合的线程

有人可以演示如何迭代响应以获得第二个bucket结果吗

for i in s.aggregations.clients.buckets.num_servers.buckets:

不起作用,否则如何访问num_服务器或服务器列表中的内容?

如果要通过第二级聚合循环,则需要两个循环。下面是一个假设索引中有“标签”和“编号”字段的示例:

从elasticsearch导入elasticsearch 从elasticsearch_dsl导入搜索中 客户端=弹性搜索 构建两级聚合 my_agg=A'terms',field='label' my_agg.bucket'number',A'terms',field='number' 生成并提交查询 s=Searchusing=client,index=stackoverflow s、 aggs.bucket'label',我的agg 响应=s.execute 循环遍历聚合的第一级 对于response.aggregations.label.bucket中的label_bucket: 打印标签:{},{}.formatlabel\u bucket.key,Label\u bucket.doc\u count 循环通过聚合的第二级 对于标签_bucket.number.bucket中的数字_bucket: 打印编号:{},{}.formatnumber\u bucket.key,Number\u bucket.doc\u count 它将打印如下内容:

Label: A, 3
  Number: 2, 2
  Number: 1, 1
Label: B, 3
  Number: 3, 2
  Number: 1, 1