gpt4 book ai didi

具有 after_key 和大小的 ElasticSearch 复合聚合

转载 作者:行者123 更新时间:2023-12-02 22:14:17 24 4
gpt4 key购买 nike

我有问题。如果我使用设置大小的直方图复合聚合。例如我有整数范围。聚合中的每个数字桶代表 1 天(使用整数作为日期并不重要)。

如果我使用 size 并说我想得到 10 个桶的结果。我可以可靠地使用 after_key 来选择我的聚合日期吗?

因为如果我按特定日期范围过滤,我也会得到过滤范围之外的桶,因为一些文档会在那里,因为直方图是在间隔字段上创建的(data_range 字段上的日期直方图也是如此类型)。

我的想法是使用 after_key 的组合来设置真正的开始日期和 size 来选择我想要多少天的结果。

让我担心的是来自documentation :

The after_key is usually the key to the last bucket returned in the response, but that isn’t guaranteed. Always use the returned after_key instead of derriving it from the buckets.

如果说:我会错过一些桶吗:after_key: 10 size: 5after_key: 15 size: 5

或者更好的问题是,最后返回的桶与下一个 after_key 不匹配的情况是什么?

这对于 Kibana 正确显示时间也很有用,但有些桶可能代表 30 年的范围,通常只查询 1 个月。因此,如果我可以正确分页,我可以节省很多。

最佳答案

据我了解,您希望具有复合聚合的滚动功能。我是对的,因为你在正确的轨道上。

将其视为 SQL 中的偏移键,但不是提供行号,而是指定最后一行值。

它的工作方式是,在进行复合聚合时,它将跳过行,直到 after_key 中提到的行,并返回下一个集合或长度 size

如果新文档是这两个调用之间的索引,您可能会错过/超出/等一些数据的唯一地方。就像你的前 5 个文档一样,你从 1 到 5,然后一些新文档被索引并插入/位于这些第一个结果之间。你可能会错过那些,因为在你第二次打电话时,你会在 5 点之后要求记录。

否则你很好。

我经常使用复合聚合,因为它有助于读取普通搜索 API 无法读取的聚合数据。

只需跟踪 after_key,当桶的长度变为零时,您可以关闭循环。

关于具有 after_key 和大小的 ElasticSearch 复合聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63508283/

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