我们有一个时间序列索引,我们如何只在索引中的最后N个项目上运行聚合?
答案 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>
}
}