gpt4 book ai didi

elasticsearch - 对按弹性索引的点击排序的聚合进行分页

转载 作者:行者123 更新时间:2023-12-03 02:13:29 26 4
gpt4 key购买 nike

我有一个 flex 索引(例如file),每次客户端下载文件时都会在其中附加一个文档。每个文档都非常基础,它包含一个filename字段和一个指示下载时间的日期。
我想要实现的是,获取每个文件在过去3个月中已下载的次数。多亏了another question,我有一个查询可以返回所有结果:

{
"query": {
"range": {
"when": {
"gte": "now-3M"
}
}
},
"aggs": {
"downloads": {
"terms": {
"field": "filename.keyword",
"size": 1000
}
}
},
"size": 0
}
现在,我想获得一个 分页的结果。术语“聚集”无法分页,因此我使用了复合聚合。当然,如果有更好的聚合,则可以在此处使用...
所以目前,我有这样的事情:
{
"query": {
"range": {
"when": {
"gte": "now-3M"
}
}
},
"aggs": {
"downloads_agg": {
"composite": {
"size": 100,
"sources": [
{
"downloads": {
"terms": {
"field": "filename.keyword"
}
}
}
]
}
}
},
"size": 0
}
这种聚合使我可以分页(由于响应中的 after_key值),但是它不是按下载次数排序的,而是按文件名排序的。
如何对索引中每个文件名的文档数量排序该复合聚合?
谢谢。

最佳答案

复合聚合不允许基于值字段进行排序。
关于elastic forum的讨论摘录:

it's designed as a memory-friendly way to paginate over aggregations.Part of the tradeoff is that you lose things like ordering by doccount, since that isn't known until after all the docs have beencollected.



我没有 Transforms(X-pack和许可的一部分)的经验,但是您可以尝试一下。除此之外,我看不到获得预期输出的方法。

关于elasticsearch - 对按弹性索引的点击排序的聚合进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64102412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com