如何使用Python在Elasticsearch中对一个对象执行多个聚合?

2024-04-24 13:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对Elasticsearch数据执行日期直方图查询,其格式如下:

datetime,field_obj和field\u obj中有三个字段:a,b,c

除了日期直方图聚合之外,我还想找到字段对象的平均值,即avg(字段a)、avg(字段b)、avg(字段c)。 我试着这样做:

    res = es.search(index="demo",body={"from": 0, "size": 0, "query": 
        {"match_all": {}}, "aggs": {
            "date_avg": {
                "date_histogram": {"field": "datetime","interval": "year"},
                    "aggs": {"avg_a": {"avg": {"field": "field.a"}}},
                    "aggs": {"avg_b": {"avg": {"field": "field.b"}}},
                    "aggs": {"avg_c": {"avg": {"field": "field.c"}}},
                         }}
         })  

但是,此查询只生成字段c的平均值。所有其他平均值都将被覆盖。你知道吗


Tags: 数据对象objfieldsearchdatetimedatees
1条回答
网友
1楼 · 发布于 2024-04-24 13:25:08

好的开始!你需要这样做,它将工作:

res = es.search(index="demo",body={
  "from": 0,
  "size": 0,
  "query": {
    "match_all": {}
  },
  "aggs": {
    "date_avg": {
      "date_histogram": {
        "field": "datetime",
        "interval": "year"
      },
      "aggs": {
        "avg_a": {
          "avg": {
            "field": "field.a"
          }
        },
        "avg_b": {
          "avg": {
            "field": "field.b"
          }
        },
        "avg_c": {
          "avg": {
            "field": "field.c"
          }
        }
      }
    }
  }
})  

相关问题 更多 >