【问题标题】:Multiple Nested Aggregations in ElasticsearchElasticsearch 中的多个嵌套聚合
【发布时间】:2015-12-15 16:51:26
【问题描述】:

我有多个主机 --> 多个 URL -->,我想在 url 的基础上进行两次聚合。一个是响应代码,另一个是响应时间的百分位。

我正在尝试做同样的事情,但它会引发异常:

找到两个子聚合方法

我的查询:

"aggs" : {
    "host" : {  "terms" : { "field" : "hostname" },
    "aggs":{
    "request": {  "terms":{  "field" : "request" },
    "aggs":{
        "status" : { "terms" : { "field" : "responsecode" }}},
        "aggs":{
           "percen" : { "percentiles" : { "field" : "response_time", "percents" : [50,75,90,95,99] }},
           "avrg" : { "avg" : { "field" : "response_time" } 
}}}}}}

Elastic Search 是否一次只支持一个字段的嵌套聚合?

【问题讨论】:

  • 是的,您可以同时制作多个嵌套聚合。这对我来说不是嵌套语法。你的映射是什么

标签: elasticsearch aggregation


【解决方案1】:

您的某个子聚合未正确嵌套在查询中,您需要删除几个大括号(见下文),具体取决于您希望包含 percenavrg 聚合的位置:

"aggs" : {
    "host" : {  "terms" : { "field" : "hostname" },
    "aggs":{
    "request": {  "terms":{  "field" : "request" },
    "aggs":{
        "status" : { "terms" : { "field" : "responsecode" }}},
                                                           ^^
                                                           ||
                                                remove these two braces

        "aggs":{
           "percen" : { "percentiles" : { "field" : "response_time", "percents" : [50,75,90,95,99] }},
           "avrg" : { "avg" : { "field" : "response_time" } 
}}}}}}

【讨论】:

  • 抱歉,我请假了几天,所以无法查看它。@Val,是的,它会工作,但它会计算每个 status_code 的百分位数和 avrg。即它将通过 hostname->request->responsecode-> {percentiles, avrg} 进行聚合我必须做的是,根据请求而不是 responsecode 计算百分位数和平均值,即它将通过 hostname->request-> {responsecode,百分位数,平均}
猜你喜欢
  • 2021-12-14
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2018-01-30
  • 2015-07-30
相关资源
最近更新 更多