如何对索引中的最后N个项进行弹性搜索聚合

时间:2017-02-10 17:57:49

标签: elasticsearch aggregate

我们有一个时间序列索引,我们如何只在索引中的最后N个项目上运行聚合?

1 个答案:

答案 0 :(得分:0)

在时间序列索引中,您可以按照datetime字段(存储索引时间信息的字段)按降序对结果进行排序,并使用搜索查询中的size选项限制结果数量在结果上运行aggs

如果您使用的是elasticsearch版本< 2.0,datetime字段可以是_timestamp字段。在后续版本的elasticsearch中,您必须在映射中显式添加日期时间字段,并在编制索引时设置其值。

简而言之,更改搜索查询,以便最后N个结果成为前N个结果并对结果执行聚合。

{
  "query": {
    "match_all": {}
  },
  "size": N,
  "sort": [
    {
      "dateTimeFieldName(May be _timestamp)": {
        "order": "desc"
      }
    }
  ],
  'aggs': {
     <your aggregation query>
   }
}