通过通道ID分组获取最大值和最小值。

问题描述 投票:0回答:1

我想用频道ID分组来获取最大和最小值,同时也想获取最大视频ID和最小视频ID。

 {

  "query": {
    "term": {
      "channel_id.keyword": {
        "value": "UCQOd1f6pYldvhgvdQ_ktpGA"
      }
    }
  },
  "aggs": {
    "views_max": {
      "max": {
        "field": "views",
        "missing": 0
      },
      "_source":["video_id","views"]
    },
     "views_min": {
      "min": {
        "field": "views",
        "missing": 0
      },
       "_source":["video_id","views"]
    }
  }
}
elasticsearch elasticsearch-aggregation elasticsearch-query
1个回答
0
投票
{
  "aggs": {
    "2": {
      "terms": {
        "field": "channel_id.keyword",
        "order": {
          "1": "desc"
        },
        "size": 10
      },
      "aggs": {
        "1": {
          "max": {
            "field": "video_id"
          }
        },
        "3": {
          "min": {
            "field": "video_id"
          }
        }
      }
    }
  },
  "size": 0,
  "_source": {
    "excludes": []
  },
  "query": {
    "bool": {
      "must": [],
      "filter": [
        {
          "bool": {
            "should": [
              {
                "match": {
                  "channel_id.keyword": "UCQOd1f6pYldvhgvdQ_ktpGA"
                }
              }
            ],
            "minimum_should_match": 1
          }
        }
      ]
    }
  }
}

上面的查询将给出一个特定的channel_id的最大和最小的视频id。

{
  "aggs": {
    "2": {
      "terms": {
        "field": "channel_id.keyword",
        "order": {
          "1": "desc"
        },
        "size": 10
      },
      "aggs": {
        "1": {
          "max": {
            "field": "video_id"
          }
        },
        "3": {
          "min": {
            "field": "video_id"
          }
        }
      }
    }
  },
  "size": 0,
  "_source": {
    "excludes": []
  }
}

有了上面的查询,你就可以为所有不同的channel_id获取各自的最大和最小video_id。

© www.soinside.com 2019 - 2024. All rights reserved.