【问题标题】:"Too many events" error when deleting a small number of Keen IO events删除少量 Keen IO 事件时出现“Too many events”错误
【发布时间】:2025-11-23 22:40:01
【问题描述】:

今天早上我们遇到了一个问题,它在热衷中创建了重复事件(其中 496 个)并试图删除它们。我有一个提取查询,它只返回那些事件。如果我在本周的时间段内运行它,删除会返回错误:

{"message": "There are too many events to perform this operation. You cannot delete a collection that has over 1000000 events. Your collection currently has 4834812 events.", "error_code": "TooManyEventsError”}

我已将提取的时间范围缩小到过去 12 小时,并获得了预期的 496 个事件....对于将其切换为删除有点紧张。

我想清理这些事件,但要确保我不会删除我想要保留的事件……。

用于提取和(即将执行)删除的过滤器有一组我想删除的敏锐 ID (keen.id)。但是,时间范围内还有更多事件与过滤器不匹配。

让我感到震惊的是,最初我在过去 2 天(或一周)内运行删除作为时间范围,它返回和错误响应,因为时间范围内有超过 100,000 个事件。

如果我缩小时间范围,我想确保它只删除过滤器中的 ID 列表,而不是时间范围内的所有事件。

【问题讨论】:

    标签: javascript http events keen-io


    【解决方案1】:

    要检查两件事:

    1. 确保您将过滤器和时间范围作为查询参数传递,而不是在内容正文中传递。 DELETE 请求的一个常见“问题”是,虽然查询和提取等其他 API 请求允许您将查询参数放入请求的内容正文中,但 DELETE API 完全忽略了内容正文。这可能会导致 DELETE API 将您的请求解释为删除整个集合的请求。

    2. 检查您的过滤器语法。第二个“陷阱”是,如果您弄乱过滤器上的语法或编码,也可能导致它们被完全忽略,API 可以再次将其解释为删除整个集合的请求。

    事实上,如果您尝试删除集合,而不是事件的子集,则会收到此错误。所以很可能以上两件事之一是罪魁祸首。

    删除语法应该是这样的:

    https://api.keen.io/3.0/projects/PROJECT_ID/events/COLLECTION_NAME?api_key=MASTER_KEY&filters=YOUR_FILTERS_HERE&timeframe=this_7_days

    最佳做法是通过将此请求更改为count request 来测试您的过滤器和时间范围语法。确保计数符合您的预期(例如,过滤 1 个事件并确保计数为 1)。计数请求语法为:

    https://api.keen.io/3.0/projects/PROJECT_ID/queries/count?api_key=READ_KEY&event_collection=COLLECTION_NAME

    最后,由于删除是不可逆的,我建议您运行提取,以便您获得已删除事件的额外副本。这样,如果您不小心删除了错误的内容,您可以重新加载它们。提取语法如下:

    https://api.keen.io/3.0/projects/PROJECT_ID/queries/extraction?api_key=READ_KEY&event_collection=COLLECTION_NAME&timeframe=this_7_days

    使用您设置的特定过滤器和时间范围成功完成计数和提取后,您可以继续运行删除请求。

    【讨论】:

      最近更新 更多