OpenSearch return 结果基于多个索引中的字段

OpenSearch return results based on field in multiple indices

我有一个包含易受攻击的依赖项及其在存储库中的状态的索引。 我不想在警报解决后删除它们,因为我还想记录漏洞已被修补。

然而,这意味着我最终得到了一些我不确定最好的处理方式的数据。

这是我的数据的简化示例

_id alert_id repository alert_name action
1 1 car_repository jwt created
2 2 car_repository express created
3 2 car_repository express resolved
4 5 boat_repository express created
5 3 car_repository log4j resolved
6 3 car_repository log4j created
7 4 boat_repository log4j created

总共创建了 5 个漏洞警告。其中2个已经解决。 现在 - 我想做的是显示当前状态。我们还有 3 个活跃的漏洞。我将如何只显示 3 个相关行? (1、4 和 7)

请记住,我对使用 ELK/OpenStack 还是很陌生,所以我不知道这是否最好使用查询或过滤器来解决,或者它是否有助于划分为多个索引。

我想说最简单的方法是维护 2 个索引:一个用于 actions 和上面 table 中的内容,一个用于 vulnerabilities 当前 状态。因此,每当您创建 "created" 操作时,您也会使用 status == "created" 创建一个漏洞文档,当您创建不是 "created" 的操作时,您将 update_by_query 该文档到设置 status = "resolved"。那么你的查询就会变得超级简单。

替代方法是使用 collapse,但根据我的经验,当您尝试对结果进行分页或聚合时,它的行为非常混乱。