首页 > 解决方案 > Elasticsearch 对带有消息过滤的 ID 进行查询 + 不存在不同消息的过滤器

问题描述

我需要根据消息和 ID 查询一些 Elastisearch 日志。

简化的场景如下:每分钟处理一个案例。如果完成,我们有一个日志“COMPLETED”,否则“NOT COMPLETED”。

案例可以重新处理,因此未完成的案例可以在下次工作时完成。我想检索所有尚未完成的案例。

示例数据表是:

message         CASE_ID
COMPLETED         008
COMPLETED         004
NOT COMPLETED     004
NOT COMPLETED     002
COMPLETED         006
NOT COMPLETED     002
COMPLETED         001

在上面的示例中,我需要检索尚未完成的案例 002。(时间顺序是从下到上)

在 SQL 中,它类似于:

SELECT CASE_ID
FROM logs l1
WHERE l1.message = "NOT COMPLETED"
  AND NOT EXISTS (
    SELECT
      CASE_ID
    FROM
      logs l2
    WHERE
      l2.message = "COMPLETED"
      AND l1.CASE_ID = l2.CASE_ID
  )

我是 ElastiSearch 的新手,在阅读了一些示例后,我尝试了不同的聚合,但它们不起作用。

感谢任何会提供帮助的人

标签: elasticsearchkibanaelasticsearch-aggregation

解决方案


推荐阅读