具有 Max 或 Min 等聚合的弹性搜索过滤器

Elastic Search filter with aggregate like Max or Min

我有带有 scheduleId 的简单文档。我想获取最新 ScheduleId 的文档数。假设 Max ScheduleId 是最新的,我们将如何编写该查询。我已经搜索和阅读了几个小时,并且可以让它工作。

{
  "aggs": {
    "max_schedule": {
      "max": {
        "field": "ScheduleId"
      }
    }
  }
}

这让我获得了 Max ScheduleId 和该聚合之外的文档总数。

如果有人能帮助我了解如何获取此聚合值并将其用作过滤器(如 SQL 中的子查询!),我将不胜感激。

应该这样做:

{
   "aggs": {
      "max_ScheduleId": {
         "terms": {
            "field": "ScheduleId",
            "order" : { "_term" : "desc" },
            "size": 1
         }
      }
   }
}

terms aggregation 将为您提供每个术语的文档计数,它适用于整数。您只需要按术语而不是计数(默认)对结果进行排序。由于您只想要最高的 ScheduleID"size":1 就足够了。

这是我用来测试它的代码:

http://sense.qbox.io/gist/93fb979393754b8bd9b19cb903a64027cba40ece