弹性搜索过滤器,其中包含Max或Min等聚合

时间:2015-03-20 20:54:45

标签: elasticsearch

我有一个带有scheduleId的简单文档。我想得到最近的ScheduleId的文件数。假设Max ScheduleId是最新的,我们将如何编写该查询。我一直在搜索和阅读几个小时,可以让它工作。

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

这就是让我获得Max ScheduleId以及该聚合的一面文件总数。

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

1 个答案:

答案 0 :(得分:1)

这应该这样做:

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

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

以下是我用来测试它的代码:

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