聚合多个字段的弹性搜索查询

时间:2020-01-08 23:27:09

标签: java elasticsearch kibana elasticsearch-aggregation

我正在编写一个弹性搜索查询,有效载荷看起来像

“ userData”:[ { “ subject1”:1234, “主题2”:678 } ]

我编写了一个查询,如果我想获取单个字段的平均值,该查询可以很好地工作

查询:

{ 
  "aggs": { 
    "student_data": { 
      "date_histogram": { 
        "field":"@timestamp",
        "calendar_interval":"minute"
      },
      "aggs": { 
        "marks_avg": { 
          "avg": { 
            "field":"subject1"
          }
        }
      }
    }
  }
}

我想要获得的也是subject2的平均值。

有点像:

"avg": { 
    "field":"subject1",
    "field":"subject2"
 }

1 个答案:

答案 0 :(得分:1)

使用多个聚合查询应该可以:

{ 
  "aggs": { 
    "student_data": { 
      "date_histogram": { 
        "field":"@timestamp",
        "calendar_interval":"minute"
      },
      "aggs": { 
        "subject1_avg": { 
          "avg": { 
            "field":"subject1"
          }
        },
        "subject2_avg": { 
          "avg": { 
            "field":"subject2"
          }
        }
      }
    }
  }
}