【发布时间】:2019-10-03 12:35:37
【问题描述】:
我想按“金额”字段聚合文档列表(每个文档都有两个字段 - 时间戳和金额),直到达到某个值。例如,我想获取按时间戳排序的文档列表,总数量等于 100。是否可以在一个查询中完成?
这是我的查询,它返回总金额 - 我想在这里添加一个条件,以在达到某个值时停止聚合。
{
"query": {
"bool": {
"filter": [
{
"range": {
"timestamp": {
"gte": 1525168583
}
}
}
]
}
},
"aggs": {
"total_amount": {
"sum": {
"field": "amount"
}
}
},
"sort": [
"timestamp"
],
"size": 10000
}
谢谢
【问题讨论】:
-
请注意
sort和size与聚合无关,仅与返回的命中有关。所以不清楚你想看到什么结果。你能展示一些你想看的模拟例子吗? -
是的,我知道,抱歉,您可以忽略它们。
-
不过,我还是希望您用一个示例来解释您希望看到的结果。您希望每小时/每天/...的总数不超过 100 吗?或者获取按时间戳排序的文档集,总数量达到100?
-
我想得到一个按时间戳排序的文档列表,总数量达到 100 个。
-
答案是:不,不可能。聚合不会影响查询本身、排序或限制结果集的大小。它们应用于与查询匹配的所有文档(与“大小”值无关)。
标签: elasticsearch elasticsearch-aggregation elasticsearch-dsl-py